<!--
说明：
    本页为 所有统计图都ok
    待优化项：
    1. 所有折线图放到一个标签页里去
    2. 折线图的标题栏，如果多的话，会把其它功能项挡住
    3. 折线图的标题栏 改成对应的project / developer 
-->
<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>统计图表-WeAdmin Frame型后台管理系统-WeAdmin 1.0</title>
        <meta name="renderer" content="webkit|ie-comp|ie-stand">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <meta http-equiv="Cache-Control" content="no-siteapp" />
		<link rel="stylesheet" href="../../../css/font.css">
		<link rel="stylesheet" href="../../../css/weadmin.css">
        <script src="../../../../lib/layui/layui.js" charset="utf-8"></script>
        <!--<script src="//cdn.bootcss.com/echarts/4.0.2/echarts.min.js"></script> --><!-- 引入echarts-->
        <script src="../../../js/echarts.min.js"></script> <!-- 引入echarts-->

        <!-- 折线图相关-->
        <script src="lib/esl.js"></script>
        <script src="lib/config.js"></script>
        <script src="lib/jquery.min.js"></script>
        <script src="lib/facePrint.js"></script>
        <script src="lib/testHelper.js"></script>
        <link rel="stylesheet" href="lib/reset.css" />
        <!-- 折线图标题的样式-->
        <style>
            .test-title {
                /*background: #146402; */
                background: #fff;
                color: #fff; /* 文字颜色*/
                height:1px;
                /*line-height: 1px; /*当把 line-height 的高度设置和 height 高度一样就能使 文字垂直居中*/

            }
        </style>


    </head>
    <body>
        <!--  顶行 文字 start-->
		<div class="weadmin-nav">
        <a href="">首页 / </a>
        <a href="">系统统计 / </a>
        <a><cite>bug统计图</cite></a>
        <a class="layui-btn layui-btn-sm" style="line-height:1.6em;margin-top:3px;float:right" href="javascript:location.replace(location.href);" title="刷新">
				<i class="layui-icon" style="line-height:30px">ဂ</i></a>
		</div>
        <!--  顶行 文字 start-->

        <!-- 提示文字 start-->
        <div class="weadmin-body" id="layui-body">

            <div>
                <blockquote class="layui-elem-quote">

                    说明：<br>
                    <div class="layui-row">
                        <div class="layui-col-xs6"><div class="grid-demo grid-demo-bg1">1）严重等级：1 非常严重，2 严重，3 普通（多数界面问题），4 轻微（优化项）</div></div>
                        <div class="layui-col-xs6"><div class="grid-demo">2) 优先等级：1 优先级最高，2 优先级中等，3 优先级一般</div></div>
                    </div>
                    <div class="layui-row">
                        <div class="layui-col-xs6"><div class="grid-demo grid-demo-bg1">3）难度等级：1 难，2 易</div></div>
                        <div class="layui-col-xs6"><div class="grid-demo">4）关闭情况：1 处理，2 关闭，3 回归，4 延迟</div></div>
                    </div>

                </blockquote>
            </div>
            <!-- 提示文字 send-->

            <!--  表格搜索框 start-->
            <!--<div class="demoTable layui-form layui-col-md12 we-search">-->
             <form class="layui-form" style="margin-bottom: 8px">
                  <span class="layui-input-inline"><input type="text" class="layui-input" id="startTime" placeholder="开始时间：yyyy-MM-dd" value="2020-01-01"></span>
                  <span class="layui-input-inline"><input type="text" class="layui-input" id="endTime" placeholder="结束时间：yyyy-MM-dd" value="2020-01-14"></span>
                  <div class="layui-input-inline">
						<select id="selector">
							<option  value="7">时间颗粒度</option>
							<option  value="90">季</option>
							<option  value="30">月</option>
							<option  value="7">周</option>
							<option  value="14">二周</option>
							<option  value="21">三周</option>
						</select>
                  </div>
                  <div class="layui-inline"><input class="layui-input" name="" id="" autocomplete="off" placeholder=" 搜索 BugID"></div>

                  <button class="layui-btn" lay-submit lay-filter="search">搜索 <i class="layui-icon">&#xe615;</i></button>
             </form>
             <!--  表格搜索框 end-->

            <!--  项目和开发维度的选项卡 start-->
            <div name="projectAndDeveloper">
            <!-- 弃用
            <fieldset class="layui-elem-field layui-field-title" hidden>
                <legend>项目和开发维度的选项卡</legend>
            </fieldset>
            <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief" hidden>
                  <ul class="layui-tab-title">
                    <li class="layui-this">项目维度</li>
                    <li>开发维度</li>
                  </ul>
                  <div class="layui-tab-content" style="height: 100px;">
                    <div class="layui-tab-item layui-show">内容不一样是要有，因为你可以监听tab事件（阅读下文档就是了）</div>
                    <div class="layui-tab-item">内容2</div>
                  </div>
            </div>
             -->

            <div class="layui-collapse" lay-accordion="">
                  <!--  项目维度的数据都放在这个 选项卡里 start-->
                  <div class="layui-colla-item">
                        <h2 class="layui-colla-title">项目维度</h2>
                        <div id="project" name="project" class="layui-colla-content">
                                <blockquote class="layui-elem-quote" hidden>
                                    项目维度
                                </blockquote>

                                <!--  标签页 显示统计数据-->
                                <!-- 项目数据表格，用来查看画图数据的 start layui-tab-brief layui-tab-card-->
                                <div class="layui-tab layui-tab-brief">
                                      <ul class="layui-tab-title">
                                            <li class="layui-this">每日数据</li>
                                            <li>每日新增/关闭数据</li>
                                            <li>每日累计数据</li>
                                            <li>全部bug数据</li>
                                            <li>全部bug趋势图</li>
                                            <li>12级别bug趋势图</li>
                                      </ul>
                                      <div class="layui-tab-content">
                                            <div class="layui-tab-item layui-show">
                                                    <blockquote class="layui-elem-quote" hidden><div align="center">每日数据</div></blockquote>
                                                    <div class="layui-row">
                                                        <!-- 测试表格，x == bug数量(新增，关闭，回归，延迟)-->
                                                        <!-- 测试表格，y == 项目每天数据   -->
                                                        <table class="layui-hide" id="tableForDrawMapWithProject" lay-filter="tableForDrawMapWithProject"></table>
                                                    </div>
                                            </div>

                                            <div class="layui-tab-item">新增bug 增长/关闭数据(今天相对昨天)
                                                    <blockquote class="layui-elem-quote" hidden><div align="center">每日新增/关闭数据</div></blockquote>
                                                    <table class="layui-hide" id="tableForDrawMapWithProjectALongtimeNewBugAddAndClose" lay-filter="tableForDrawMapWithProjectALongtimeNewBugAddAndClose"></table>
                                            </div>

                                            <div class="layui-tab-item">
                                                    <blockquote class="layui-elem-quote" hidden><div align="center">每日累计数据</div></blockquote>
                                                    <div class="layui-row">
                                                        <!-- 测试表格，x == bug数量(新增，关闭，回归，延迟)-->
                                                        <!-- 测试表格，y == 项目每天数据   -->
                                                        <table class="layui-hide" id="tableForDrawMapWithProjectEverydaySum" lay-filter="tableForDrawMapWithProjectEverydaySum"></table>
                                                    </div>
                                            </div>

                                            <div class="layui-tab-item">
                                                    <blockquote class="layui-elem-quote" hidden><div align="center">全部bug数据</div></blockquote>
                                                    <div class="layui-row">
                                                        <!-- 测试表格，x == bug数量(新增，关闭，回归，延迟)-->
                                                        <!-- 测试表格，y == 项目每天数据   -->
                                                        <table class="layui-hide" id="tableForDrawMapWithProjectALongtimeAllBug" lay-filter="tableForDrawMapWithProjectALongtimeAllBug"></table>
                                            </div>


                                            <div class="layui-tab-item">
                                                <!-- 折线图 start-->
                                                <blockquote class="layui-elem-quote"><div align="center">1）项目维度，按时间（时间可自定义）统计新增bug、关闭bug、待回归bug等</div></blockquote>
                                                <div id="allBugMap1"></div> <!--  所有bug end-->
                                            </div>

                                            <div class="layui-tab-item">
                                                <!--  12bug start-->
                                                <blockquote class="layui-elem-quote"><div align="center">2）项目维度，按时间（时间可自定义）统计新增一、二级新增bug、关闭bug、待回归bug等</div></blockquote>
                                                <div id="Bug12Map1"></div>
                                                <!--  12bug end-->
                                            </div>

                                      </div>
                                 </div>
                                <!-- 项目数据表格，用来查看画图数据的 end-->
                        </div>
                  </div>
                 <!--  项目维度的数据都放在这个div end-->

                  <!--  开发维度的数据都放在这个 选项卡里 start-->
                  <div class="layui-colla-item">
                    <h2 class="layui-colla-title">开发维度</h2>
                    <div id="project" name="project" class="layui-colla-content">
                                <blockquote class="layui-elem-quote" hidden>
                                    开发维度
                                </blockquote>

                                <!--  标签页 显示统计数据-->
                                <!-- 项目数据表格，用来查看画图数据的 start layui-tab-brief layui-tab-card-->
                                <div class="layui-tab layui-tab-brief">
                                      <ul class="layui-tab-title">
                                            <li class="layui-this">bug数据</li>
                                            <li>易bug产生比率</li>
                                            <li>bug解决率</li>
                                      </ul>
                                      <div class="layui-tab-content">
                                            <div class="layui-tab-item layui-show">
                                                    <blockquote class="layui-elem-quote" hidden><div align="center">bug数据</div></blockquote>
                                                    <div class="layui-row">
                                                        <table class="layui-hide" id="tableWithDeveloper" lay-filter="tableWithDeveloper"></table>
                                                    </div>
                                            </div>

                                            <div class="layui-tab-item layui-show">
                                                    <blockquote class="layui-elem-quote" hidden><div align="center">易bug产生比率</div></blockquote>
                                                    <div class="layui-row">
                                                        <table class="layui-hide" id="easyBugTableWithDeveloper" lay-filter="easyBugTableWithDeveloper"></table>
                                                    </div>
                                            </div>

                                            <div class="layui-tab-item layui-show">
                                                    <blockquote class="layui-elem-quote" hidden><div align="center">bug解决率</div></blockquote>
                                                    <div class="layui-row">
                                                        <table class="layui-hide" id="bugSolveRateTableWithDeveloper" lay-filter="bugSolveRateTableWithDeveloper"></table>
                                                    </div>
                                            </div>

                                      </div>
                                 </div>
                                <!-- 项目数据表格，用来查看画图数据的 end-->
                        </div>
                  </div>
                  <!--  开发维度的数据都放在这个 选项卡里 end-->

            </div>




            </div>
            <!--  项目和开发维度的选项卡 end-->



            <!-- 折线图 start-->
            <blockquote class="layui-elem-quote"><div align="center">1）项目维度，按时间（时间可自定义）统计新增bug、关闭bug、待回归bug等</div></blockquote>
            <div id="allBugMapWithProject"></div> <!--  所有bug end-->

            <!--  12bug start-->
            <blockquote class="layui-elem-quote"><div align="center">2）项目维度，按时间（时间可自定义）统计新增一、二级新增bug、关闭bug、待回归bug等</div></blockquote>
            <div id="Bug12MapWithProject"></div>
            <!--  12bug end-->

            <blockquote class="layui-elem-quote"><div align="center">3) 项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线；</div></blockquote>
            <div id="AddBugAddAndCloseStatusMapWithProject"></div>

            <blockquote class="layui-elem-quote"><div align="center">4）项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况	；</div></blockquote>
            <div id="allBugStatusMapWithProject"></div>

            <blockquote class="layui-elem-quote"><div align="center">7）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线；</div></blockquote>
            <div id="AddBugAddAndCloseStatusMapWithDeveloper"></div>

            <blockquote class="layui-elem-quote"><div align="center">8）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线；</div></blockquote>
            <div id="allBugStatusMapWithDeveloper"></div>

            <blockquote class="layui-elem-quote"><div align="center">11）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线；1/2    月/周/季；</div></blockquote>
            <div id="easyBugStatusMapWithDeveloper"></div>

            <blockquote class="layui-elem-quote"><div align="center">12）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制一二级bug解决及时率曲线和三四级bug解决及时率曲线。</div></blockquote>
            <div id="bugSolveRateStatusMapWithDeveloper"></div>


        </div>
        <!-- body div end -->


<!-- ///////////////////////////////// 以下为脚本内容 -->
        <script>
            //--------------------------------------- 定义相关方法 start -------------------------------------------------------

            //渲染分页方法
            function renderElement(){
                layui.use('element', function() {
                    var element = layui.element;
                });
            }


            //渲染日历相关方法
            function renderLaydate(laydateId){ // 指向id

                layui.use(['laydate'], function() {
                    var laydate = layui.laydate;

                    //执行一个laydate实例
                    laydate.render({
                        elem: '#' + laydateId  //指定元素
                    });
			    });

            }

            //渲染table数据
            /*
            参数1： argElem              : 指向table的id
            参数1： argUrl               : url路径
            参数1： argStartTime         : 开始时间
            参数1： argEndTime           : 结束时间
            参数1： argTableRenderId     : 给渲染制定一个id,共其他监听调用
             */
            function renderTable(argElem, argUrl, argStartTime, argEndTime, argTableRenderId){
                layui.use('table',function () {
                        var table = layui.table;

                        <!-- tableForDrawMapWithProject 为了画图显示的表格 如果某个project是空，就赋值null -->
                        table.render(   {
                            elem: '#' + argElem //指向table的id
                            , url: argUrl
                            //, url: '../../../../json/test_project_map_allargs.json'
                            , method: 'get'
                            , loading: true //是否显示加载条（默认：true）
                            , where: {startTime: argStartTime, endTime: argEndTime}
                            , response: {
                                statusCode: 200
                            }
                            , cols: [[
                            {type: 'numbers', fixed: 'left'}//, fixed: true
                            , {checkbox: true, fixed: true}  //{type: 'checkbox'}
                            , {field: 'bug_submit_date', title: '时间', sort: true, width: 120}
                            , {field: 'project', title: '项目', sort: true, width: 80, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add', title: '新增', sort: true, width: 80}
                            , {field: 'close', title: '关闭', sort: true, width: 80}
                            , {field: 'regression', title: '回归', sort: true, width: 80}
                            , {field: 'delay', title: '延迟', width: 80}
                            , {field: 'add12', title: '新增(1-2级) ', sort: true, width: 120}
                            , {field: 'close12', title: '关闭(1-2级)', sort: true,  width: 120} //暂时先200
                            , {field: 'regression12', title: '回归(1-2级)', sort: true, width: 120}
                            , {field: 'delay12', title: '延迟(1-2级)', sort: true, width: 120}
                            , {field: 'total12', title: '总数(1-2级)', sort: true, width: 120}
                            , {field: 'bugCloseRate', title: 'bug解决率', sort: true, width: 120}
                            , {field: 'rank', title: '排名', sort: true, width: 80}
                            , {field: 'totalNum', title: '总数', sort: true, width: 80}

                            , {field: 'project0', title: '项目0名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project0', title: '项目0新增', sort: true, width: 120}
                            , {field: 'close_project0', title: '项目0关闭', sort: true, width: 120}
                            , {field: 'regression_project0', title: '项目0回归', sort: true, width: 120}
                            , {field: 'delay_project0', title: '项目0延迟', sort: true, width: 120}

                            , {field: 'project1', title: '项目1名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project1', title: '项目1新增', sort: true, width: 120}
                            , {field: 'close_project1', title: '项目1关闭', sort: true, width: 120}
                            , {field: 'regression_project1', title: '项目1回归', sort: true, width: 120}
                            , {field: 'delay_project1', title: '项目1延迟', sort: true, width: 120}

                            , {field: 'project2', title: '项目2名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project2', title: '项目2新增', sort: true, width: 120}
                            , {field: 'close_project2', title: '项目2关闭', sort: true, width: 120}
                            , {field: 'regression_project2', title: '项目2回归', sort: true, width: 120}
                            , {field: 'delay_project2', title: '项目2延迟', sort: true, width: 120}

                            , {field: 'project3', title: '项目3名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project3', title: '项目3新增', sort: true, width: 120}
                            , {field: 'close_project3', title: '项目3关闭', sort: true, width: 120}
                            , {field: 'regression_project3', title: '项目3回归', sort: true, width: 120}
                            , {field: 'delay_project3', title: '项目3延迟', sort: true, width: 120}

                            , {field: 'project4', title: '项目4名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project4', title: '项目4新增', sort: true, width: 120}
                            , {field: 'close_project4', title: '项目4关闭', sort: true, width: 120}
                            , {field: 'regression_project4', title: '项目4回归', sort: true, width: 120}
                            , {field: 'delay_project4', title: '项目4延迟', sort: true, width: 120}

                            , {field: 'project5', title: '项目5名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project5', title: '项目5新增', sort: true, width: 120}
                            , {field: 'close_project5', title: '项目5关闭', sort: true, width: 120}
                            , {field: 'regression_project5', title: '项目5回归', sort: true, width: 120}
                            , {field: 'delay_project5', title: '项目5延迟', sort: true, width: 120}

                            , {field: 'project6', title: '项目6名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project6', title: '项目6新增', sort: true, width: 120}
                            , {field: 'close_project6', title: '项目6关闭', sort: true, width: 120}
                            , {field: 'regression_project6', title: '项目6回归', sort: true, width: 120}
                            , {field: 'delay_project6', title: '项目6延迟', sort: true, width: 120}

                            , {field: 'project7', title: '项目7名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project7', title: '项目7新增', sort: true, width: 120}
                            , {field: 'close_project7', title: '项目7关闭', sort: true, width: 120}
                            , {field: 'regression_project7', title: '项目7回归', sort: true, width: 120}
                            , {field: 'delay_project7', title: '项目7延迟', sort: true, width: 120}

                            , {field: 'project8', title: '项目8名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project8', title: '项目8新增', sort: true, width: 120}
                            , {field: 'close_project8', title: '项目8关闭', sort: true, width: 120}
                            , {field: 'regression_project8', title: '项目8回归', sort: true, width: 120}
                            , {field: 'delay_project8', title: '项目8延迟', sort: true, width: 120}

                            , {field: 'project9', title: '项目9名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project9', title: '项目9新增', sort: true, width: 120}
                            , {field: 'close_project9', title: '项目9关闭', sort: true, width: 120}
                            , {field: 'regression_project9', title: '项目9回归', sort: true, width: 120}
                            , {field: 'delay_project9', title: '项目9延迟', sort: true, width: 120}

                            , {field: 'project10', title: '项目10名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project10', title: '项目10新增', sort: true, width: 120}
                            , {field: 'close_project10', title: '项目10关闭', sort: true, width: 120}
                            , {field: 'regression_project10', title: '项目10回归', sort: true, width: 120}
                            , {field: 'delay_project10', title: '项目10延迟', sort: true, width: 120}

                            , {field: 'project11', title: '项目11名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project11', title: '项目11新增', sort: true, width: 120}
                            , {field: 'close_project11', title: '项目11关闭', sort: true, width: 120}
                            , {field: 'regression_project11', title: '项目11回归', sort: true, width: 120}
                            , {field: 'delay_project11', title: '项目11延迟', sort: true, width: 120}

                            , {field: 'project12', title: '项目12名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project12', title: '项目12新增', sort: true, width: 120}
                            , {field: 'close_project12', title: '项目12关闭', sort: true, width: 120}
                            , {field: 'regression_project12', title: '项目12回归', sort: true, width: 120}
                            , {field: 'delay_project12', title: '项目12延迟', sort: true, width: 120}

                            , {field: 'project13', title: '项目13名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project13', title: '项目13新增', sort: true, width: 120}
                            , {field: 'close_project13', title: '项目13关闭', sort: true, width: 120}
                            , {field: 'regression_project13', title: '项目13回归', sort: true, width: 120}
                            , {field: 'delay_project13', title: '项目13延迟', sort: true, width: 120}



                        ]]
                            , id: argTableRenderId //给渲染制定一个id,共其他监听调用
                            , page: false
                            , height: 400
                        });
                });

            }

            /*
            方法                         ：项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭数据（bugstatus=1 / 2）；
            参数1： argElem              : 指向table的id
            参数2： argUrl               : url路径
            参数3： argStartTime         : 开始时间
            参数4： argEndTime           : 结束时间
            参数5： timeDifference       : 时间差/时间颗粒度（季度/月/周/二周/三周）
            参数6： argTableRenderId     : 给渲染制定一个id,共其他监听调用
             */
            function renderTableForDrawMapWithProjectALongtimeNewBugAddAndClose(argElem, argUrl, argStartTime, argEndTime, timeDifference, argTableRenderId){
                layui.use('table',function () {
                        var table = layui.table;

                        <!-- tableForDrawMapWithProject 为了画图显示的表格 如果某个project是空，就赋值null -->
                        table.render(   {
                            elem: '#' + argElem //指向table的id
                            , url: argUrl
                            //, url: '../../../../json/test_project_map_allargs.json'
                            , method: 'get'
                            , loading: true //是否显示加载条（默认：true）
                            , where: {startTime: argStartTime, endTime: argEndTime,timeDifference: timeDifference}
                            , response: {
                                statusCode: 200
                            }
                            , cols: [[
                            {type: 'numbers', fixed: 'left'}//, fixed: true
                            , {checkbox: true, fixed: true}  //{type: 'checkbox'}
                            , {field: 'bug_submit_date', title: '时间', sort: true, width: 120}
                            , {field: 'project', title: '项目', sort: true, width: 80, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add', title: '新增', sort: true, width: 80}
                            , {field: 'close', title: '关闭', sort: true, width: 80}

                            , {field: 'project0', title: '项目0名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project0', title: '项目0新增', sort: true, width: 120}
                            , {field: 'close_project0', title: '项目0关闭', sort: true, width: 120}


                            , {field: 'project1', title: '项目1名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project1', title: '项目1新增', sort: true, width: 120}
                            , {field: 'close_project1', title: '项目1关闭', sort: true, width: 120}


                            , {field: 'project2', title: '项目2名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project2', title: '项目2新增', sort: true, width: 120}
                            , {field: 'close_project2', title: '项目2关闭', sort: true, width: 120}


                            , {field: 'project3', title: '项目3名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project3', title: '项目3新增', sort: true, width: 120}
                            , {field: 'close_project3', title: '项目3关闭', sort: true, width: 120}


                            , {field: 'project4', title: '项目4名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project4', title: '项目4新增', sort: true, width: 120}
                            , {field: 'close_project4', title: '项目4关闭', sort: true, width: 120}


                            , {field: 'project5', title: '项目5名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project5', title: '项目5新增', sort: true, width: 120}
                            , {field: 'close_project5', title: '项目5关闭', sort: true, width: 120}


                            , {field: 'project6', title: '项目6名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project6', title: '项目6新增', sort: true, width: 120}
                            , {field: 'close_project6', title: '项目6关闭', sort: true, width: 120}


                            , {field: 'project7', title: '项目7名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project7', title: '项目7新增', sort: true, width: 120}
                            , {field: 'close_project7', title: '项目7关闭', sort: true, width: 120}


                            , {field: 'project8', title: '项目8名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project8', title: '项目8新增', sort: true, width: 120}
                            , {field: 'close_project8', title: '项目8关闭', sort: true, width: 120}


                            , {field: 'project9', title: '项目9名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project9', title: '项目9新增', sort: true, width: 120}
                            , {field: 'close_project9', title: '项目9关闭', sort: true, width: 120}


                            , {field: 'project10', title: '项目10名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project10', title: '项目10新增', sort: true, width: 120}
                            , {field: 'close_project10', title: '项目10关闭', sort: true, width: 120}


                            , {field: 'project11', title: '项目11名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project11', title: '项目11新增', sort: true, width: 120}
                            , {field: 'close_project11', title: '项目11关闭', sort: true, width: 120}


                            , {field: 'project12', title: '项目12名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project12', title: '项目12新增', sort: true, width: 120}
                            , {field: 'close_project12', title: '项目12关闭', sort: true, width: 120}


                            , {field: 'project13', title: '项目13名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project13', title: '项目13新增', sort: true, width: 120}
                            , {field: 'close_project13', title: '项目13关闭', sort: true, width: 120}
                        ]]
                            , id: argTableRenderId //给渲染制定一个id,共其他监听调用
                            , page: false
                            , height: 400
                        });
                });

            }

            /*4. 项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况
            方法                         ：项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况
            参数1： argElem              : 指向table的id
            参数2： argUrl               : url路径
            参数3： argStartTime         : 开始时间
            参数4： argEndTime           : 结束时间
            参数5： timeDifference       : 时间差/时间颗粒度（季度/月/周/二周/三周）
            参数6： argTableRenderId     : 给渲染制定一个id,共其他监听调用
             */
            function renderTableForDrawMapWithProjectALongtimeAllBug(argElem, argUrl, argStartTime, argEndTime, argTimeDifference, argTableRenderId){
                layui.use('table',function () {
                        var table = layui.table;
                        console.log("renderTableForDrawMapWithProjectALongtimeAllBug==参数（timeDifference）==" +  argTimeDifference);
                        <!-- tableForDrawMapWithProject 为了画图显示的表格 如果某个project是空，就赋值null -->
                        table.render(   {
                            elem: '#' + argElem //指向table的id
                            , url: argUrl
                            , method: 'get'
                            , toolbar: true //显示工具栏
                            , loading: true //是否显示加载条（默认：true）
                            , where: {startTime: argStartTime, endTime: argEndTime,timeDifference: argTimeDifference}
                            , response: {
                                statusCode: 200
                            }
                            , cols: [[
                            {type: 'numbers', fixed: 'left'}//, fixed: true
                            , {checkbox: true, fixed: true}  //{type: 'checkbox'}
                            , {field: 'bug_submit_date', title: '时间', sort: true, width: 120}
                            , {field: 'project', title: '项目', sort: true, width: 80, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add', title: '新增', sort: true, width: 80}
                            , {field: 'close', title: '关闭', sort: true, width: 80}
                            , {field: 'regression', title: '回归', sort: true, width: 80}
                            , {field: 'delay', title: '延迟', width: 80}
                            , {field: 'add12', title: '新增(1-2级) ', sort: true, width: 120}
                            , {field: 'close12', title: '关闭(1-2级)', sort: true,  width: 120} //暂时先200
                            , {field: 'regression12', title: '回归(1-2级)', sort: true, width: 120}
                            , {field: 'delay12', title: '延迟(1-2级)', sort: true, width: 120}
                            , {field: 'total12', title: '总数(1-2级)', sort: true, width: 120}
                            , {field: 'bug_close_rate', title: 'bug解决率', sort: true, width: 120}
                            , {field: 'rank', title: '排名', sort: true, width: 80}
                            , {field: 'totalNum', title: '总数', sort: true, width: 80}

                            , {field: 'project0', title: '项目0名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project0', title: '项目0新增', sort: true, width: 120}
                            , {field: 'close_project0', title: '项目0关闭', sort: true, width: 120}
                            , {field: 'regression_project0', title: '项目0回归', sort: true, width: 120}
                            , {field: 'delay_project0', title: '项目0延迟', sort: true, width: 120}
                            , {field: 'total_project0', title: '项目0总数', sort: true, width: 120}

                            , {field: 'project1', title: '项目1名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project1', title: '项目1新增', sort: true, width: 120}
                            , {field: 'close_project1', title: '项目1关闭', sort: true, width: 120}
                            , {field: 'regression_project1', title: '项目1回归', sort: true, width: 120}
                            , {field: 'delay_project1', title: '项目1延迟', sort: true, width: 120}
                            , {field: 'total_project1', title: '项目1总数', sort: true, width: 120}

                            , {field: 'project2', title: '项目2名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project2', title: '项目2新增', sort: true, width: 120}
                            , {field: 'close_project2', title: '项目2关闭', sort: true, width: 120}
                            , {field: 'regression_project2', title: '项目2回归', sort: true, width: 120}
                            , {field: 'delay_project2', title: '项目2延迟', sort: true, width: 120}
                            , {field: 'total_project2', title: '项目2总数', sort: true, width: 120}

                            , {field: 'project3', title: '项目3名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project3', title: '项目3新增', sort: true, width: 120}
                            , {field: 'close_project3', title: '项目3关闭', sort: true, width: 120}
                            , {field: 'regression_project3', title: '项目3回归', sort: true, width: 120}
                            , {field: 'delay_project3', title: '项目3延迟', sort: true, width: 120}
                            , {field: 'total_project3', title: '项目3总数', sort: true, width: 120}

                            , {field: 'project4', title: '项目4名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project4', title: '项目4新增', sort: true, width: 120}
                            , {field: 'close_project4', title: '项目4关闭', sort: true, width: 120}
                            , {field: 'regression_project4', title: '项目4回归', sort: true, width: 120}
                            , {field: 'delay_project4', title: '项目4延迟', sort: true, width: 120}
                            , {field: 'total_project4', title: '项目4总数', sort: true, width: 120}

                            , {field: 'project5', title: '项目5名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project5', title: '项目5新增', sort: true, width: 120}
                            , {field: 'close_project5', title: '项目5关闭', sort: true, width: 120}
                            , {field: 'regression_project5', title: '项目5回归', sort: true, width: 120}
                            , {field: 'delay_project5', title: '项目5延迟', sort: true, width: 120}
                            , {field: 'total_project5', title: '项目5总数', sort: true, width: 120}

                            , {field: 'project6', title: '项目6名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project6', title: '项目6新增', sort: true, width: 120}
                            , {field: 'close_project6', title: '项目6关闭', sort: true, width: 120}
                            , {field: 'regression_project6', title: '项目6回归', sort: true, width: 120}
                            , {field: 'delay_project6', title: '项目6延迟', sort: true, width: 120}
                            , {field: 'total_project6', title: '项目6总数', sort: true, width: 120}

                            , {field: 'project7', title: '项目7名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project7', title: '项目7新增', sort: true, width: 120}
                            , {field: 'close_project7', title: '项目7关闭', sort: true, width: 120}
                            , {field: 'regression_project7', title: '项目7回归', sort: true, width: 120}
                            , {field: 'delay_project7', title: '项目7延迟', sort: true, width: 120}
                            , {field: 'total_project7', title: '项目7总数', sort: true, width: 120}

                            , {field: 'project8', title: '项目8名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project8', title: '项目8新增', sort: true, width: 120}
                            , {field: 'close_project8', title: '项目8关闭', sort: true, width: 120}
                            , {field: 'regression_project8', title: '项目8回归', sort: true, width: 120}
                            , {field: 'delay_project8', title: '项目8延迟', sort: true, width: 120}
                            , {field: 'total_project8', title: '项目8总数', sort: true, width: 120}

                            , {field: 'project9', title: '项目9名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project9', title: '项目9新增', sort: true, width: 120}
                            , {field: 'close_project9', title: '项目9关闭', sort: true, width: 120}
                            , {field: 'regression_project9', title: '项目9回归', sort: true, width: 120}
                            , {field: 'delay_project9', title: '项目9延迟', sort: true, width: 120}
                            , {field: 'total_project9', title: '项目9总数', sort: true, width: 120}

                            , {field: 'project10', title: '项目10名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project10', title: '项目10新增', sort: true, width: 120}
                            , {field: 'close_project10', title: '项目10关闭', sort: true, width: 120}
                            , {field: 'regression_project10', title: '项目10回归', sort: true, width: 120}
                            , {field: 'delay_project10', title: '项目10延迟', sort: true, width: 120}
                            , {field: 'total_project10', title: '项目10总数', sort: true, width: 120}

                            , {field: 'project11', title: '项目11名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project11', title: '项目11新增', sort: true, width: 120}
                            , {field: 'close_project11', title: '项目11关闭', sort: true, width: 120}
                            , {field: 'regression_project11', title: '项目11回归', sort: true, width: 120}
                            , {field: 'delay_project11', title: '项目11延迟', sort: true, width: 120}
                            , {field: 'total_project11', title: '项目11总数', sort: true, width: 120}

                            , {field: 'project12', title: '项目12名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project12', title: '项目12新增', sort: true, width: 120}
                            , {field: 'close_project12', title: '项目12关闭', sort: true, width: 120}
                            , {field: 'regression_project12', title: '项目12回归', sort: true, width: 120}
                            , {field: 'delay_project12', title: '项目12延迟', sort: true, width: 120}
                            , {field: 'total_project12', title: '项目12总数', sort: true, width: 120}

                            , {field: 'project13', title: '项目13名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_project13', title: '项目13新增', sort: true, width: 120}
                            , {field: 'close_project13', title: '项目13关闭', sort: true, width: 120}
                            , {field: 'regression_project13', title: '项目13回归', sort: true, width: 120}
                            , {field: 'delay_project13', title: '项目13延迟', sort: true, width: 120}
                            , {field: 'total_project13', title: '项目13总数', sort: true, width: 120}
                        ]]
                            , id: argTableRenderId //给渲染制定一个id,共其他监听调用
                            , page: false
                            , height: 400
                        });
                });

            }



            //渲染折线图 获取所需参数----------------------------------------------------------
            // 1）项目维度，按时间（时间可自定义）统计新增bug、关闭bug、待回归bug等；后期传一个json
            /*
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组
            返回值： json_str

             */
            function getRenderMapWithProjectByTimeAllBugArgs(startTimeFromForm, endTimeFromForm){
                // 测试异步请求,返回值给的错误，因此使用同步 get请求
                var $ = layui.jquery;

                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                console.log("json_obj.lengendData=", json_obj.legendData);
                console.log("进入请求数据方法");

                $.ajax({
                            url: "/getTableForDrawMapWithProjectEverydaySum",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm},
                            datatype:"json",
                            async:false,
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);
                                console.log("，returnDataJson="+ returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //all bug
                                var xAxisDataFromServer = [];
                                var totoalNumArrFromServer = [];
                                var addNumArrFromServer = [];
                                var closeNumArrFromServer = [];
                                var regressionNumArrFromServer = [];
                                var delayNumArrFromServer = [];

                                //循环获取[{xx,xx}, {xx,xx}] json中的数据
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item.add);
                                    xAxisDataFromServer.push(item.bug_submit_date); //日期
                                    totoalNumArrFromServer.push(item.totalNum); //总数
                                    addNumArrFromServer.push(item.add); //新增
                                    closeNumArrFromServer.push(item.close); //关闭
                                    console.log(totoalNumArrFromServer);
                                    regressionNumArrFromServer.push(item.regression); //回归
                                    delayNumArrFromServer.push(item.delay); //延迟


                                });

                                var legendData = ['总数','新增','关闭','回归','延迟'];
                                var xAxisData = xAxisDataFromServer;
                                console.log("x轴数组" + xAxisData);

                                totoalNumArr = totoalNumArrFromServer;
                                addNumArr = addNumArrFromServer;
                                closeNumArr = closeNumArrFromServer;
                                regressionNumArr = regressionNumArrFromServer;
                                delayNumArr = delayNumArrFromServer;

                                var seriesDataJson = {"totoalNum": totoalNumArr, "add": addNumArr, "close": closeNumArr, "regression": regressionNumArr, "delay": delayNumArr};
                                console.log('json类型= ',typeof(seriesDataJson) );

                                //拼接json,返回参数数据
                                    //转成json 对象 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                               // var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };


                                json_obj.legendData = legendData;
                                json_obj.xAxisData = xAxisData;
                                json_obj.seriesDataJson = seriesDataJson;

                                //console.log(json_obj);
                                //console.log("最终json数据==" + JSON.stringify(json_obj));

                                //return "haha"; // 这里不能写return,引发错误

                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });


                /*
                $.get('/getTableForDrawMapWithProjectEverydaySum', function (josnstr) {
                    console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);
                                console.log("，returnDataJson="+ returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //all bug
                                var xAxisDataFromServer = [];
                                var totoalNumArrFromServer = [];
                                var addNumArrFromServer = [];
                                var closeNumArrFromServer = [];
                                var regressionNumArrFromServer = [];
                                var delayNumArrFromServer = [];

                                //循环获取[{xx,xx}, {xx,xx}] json中的数据
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item.add);
                                    xAxisDataFromServer.push(item.bug_submit_date); //日期
                                    totoalNumArrFromServer.push(item.totalNum); //总数
                                    addNumArrFromServer.push(item.add); //新增
                                    closeNumArrFromServer.push(item.close); //关闭
                                    console.log(totoalNumArrFromServer);
                                    regressionNumArrFromServer.push(item.regression); //回归
                                    delayNumArrFromServer.push(item.delay); //延迟


                                });

                                var legendData = ['总数','新增','关闭','回归','延迟'];
                                var xAxisData = xAxisDataFromServer;
                                console.log("x轴数组" + xAxisData);

                                totoalNumArr = totoalNumArrFromServer;
                                addNumArr = addNumArrFromServer;
                                closeNumArr = closeNumArrFromServer;
                                regressionNumArr = regressionNumArrFromServer;
                                delayNumArr = delayNumArrFromServer;

                                var seriesDataJson = {"totoalNum": totoalNumArr, "add": addNumArr, "close": closeNumArr, "regression": regressionNumArr, "delay": delayNumArr};
                                console.log('json类型= ',typeof(seriesDataJson) );

                                //拼接json,返回参数数据
                                    //转成json 对象 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                                //var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                                json_obj.legendData = legendData;
                                json_obj.xAxisData = xAxisData;
                                json_obj.seriesDataJson = seriesDataJson;
                                console.log(json_obj);
                                console.log("最终json数据==" + JSON.stringify(json_obj));

                                return json_obj;
                });

                 */
                //console.log("先打印了这条");
                //console.log("要返回数据 json数据==" + JSON.stringify(json_obj));// 数据是有的，要返还json_str格式,返回对象保存不住
                var json_str = JSON.stringify(json_obj);
                console.log('返回的json_str=', json_str);
                return json_str;

            }

            //渲染折线图----------------------------------------------------------
            // 1-1）项目维度，按时间（时间可自定义）统计新增bug、关闭bug、待回归bug等；后期传一个json
            /*
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组

             */
            function renderMapWithProjectByTimeAllBug(legendData, xAxisData, seriesDataJson){
                    //先清空div中的数据 第一种：
                    document.getElementById('allBugMapWithProject').innerHTML = "";
                    //第二种：$('#bigDiv').html("");

                    var chart;
                    var myChart;
                    var option;

                    require([
                        'echarts'/*, 'map/js/china' */
                    ], function (echarts) {

                        var option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'cross',
                                    crossStyle: {
                                        color: '#999'
                                    }
                                }
                            },
                            toolbox: {
                                feature: {
                                    dataView: {show: true, readOnly: false},
                                    magicType: {show: true, type: ['line', 'bar']},
                                    restore: {show: true},
                                    saveAsImage: {show: true}
                                }
                            },
                            legend: {
                                //data:['1808','LJG','ZG','test']
                                data: legendData,
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    //data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
                                    data: xAxisData,
                                    axisPointer: {
                                        type: 'shadow'
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        //formatter: '{value} ml'
                                        formatter: '{value} 个'
                                    }
                                },
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        formatter: '{value} 个 '
                                    }
                                }

                            ],
                            series: [
                                {
                                    name:legendData[0],
                                    type:'line',
                                    //data:[22,26,67,70,71,77,83,84,150,153,179,208,219,220,257,267,268,269]
                                    data:seriesDataJson['totoalNum']
                                },
                                {
                                    name:legendData[1],
                                    type:'line',
                                    //data:[0,0,0,0,0,0,0,0,8,9,9,12,13,13,16,16,16,17]
                                    data:seriesDataJson['add']
                                },
                                {
                                    name:legendData[2],
                                    type:'line',
                                    yAxisIndex: 1,
                                    //data:[22,26,67,70,71,76,82,83,136,138,164,189,197,198,226,236,237,237]
                                    data:seriesDataJson['close']
                                },
                                {
                                    name:legendData[3],
                                    type:'line',
                                    yAxisIndex: 1,
                                    //data:[0,0,0,0,0,0,0,1,1,1,1,12,2,2,4,4,4,4]
                                    data:seriesDataJson['regression']
                                },
                                {
                                    name:legendData[4],
                                    type:'line',
                                    yAxisIndex: 1,
                                    //data:[0,0,0,0,0,1,1,1,5,5,5,6,7,7,11,11,11,11]
                                    data:seriesDataJson['delay']
                                }
                            ]
                        };

                        chart = myChart = testHelper.create(echarts, 'allBugMapWithProject', {
                            option: option,
                            lazyUpdate: false
                            //title: '1）项目维度，按时间（时间可自定义）统计新增bug、关闭bug、待回归bug等；'
                        });
                    });


            }


            //渲染折线图 获取12级别bug 参数----------------------------------------------------------
            // 2）项目维度参数，按时间（时间可自定义）统计新增一、二级新增bug、关闭bug、待回归bug等；后期传一个json
            /*
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组
            返回值： json_str

             */
            function getRenderMapWithProjectByTime12BugArgs(legendData, xAxisData, seriesDataJson){
                var $ = layui.jquery;

                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                console.log("json_obj.lengendData=", json_obj.legendData);
                console.log("进入请求数据方法");

                $.ajax({
                            url: "/getTableForDrawMapWithProjectEverydaySum",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm},
                            datatype:"json",
                            async:false,
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);
                                console.log("，returnDataJson="+ returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //12级bug参数
                                var xAxisDataWithProject12BugFromServer = [];
                                var totoalNumArrWithProject12BugFromServer = [];
                                var addNumArrWithProject12BugFromServer = [];
                                var closeNumArrWithProject12BugFromServer = [];
                                var regressionWithProject12BugNumArrFromServer = [];
                                var delayNumArrWithProject12BugFromServer = [];

                                //循环获取[{xx,xx}, {xx,xx}] json中的数据
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item.add);
                                    //1-2bug
                                    xAxisDataWithProject12BugFromServer.push(item.bug_submit_date); //日期
                                    totoalNumArrWithProject12BugFromServer.push(item.total12); //总数
                                    addNumArrWithProject12BugFromServer.push(item.add12);  //新增
                                    closeNumArrWithProject12BugFromServer.push(item.close12); //关闭
                                    regressionWithProject12BugNumArrFromServer.push(item.regression12); //回归
                                    delayNumArrWithProject12BugFromServer.push(item.delay12); //延迟

                                });

                                var legendDataWithProject12Bug = ['总数(1-2级bug)','新增(1-2级bug)','关闭(1-2级bug)','回归(1-2级bug)','延迟(1-2级bug)'];
                                var xAxisDataWithProject12Bug = xAxisDataWithProject12BugFromServer;
                                totoalNumArrWithProject12Bug = totoalNumArrWithProject12BugFromServer;
                                addNumArrWithProject12Bug = addNumArrWithProject12BugFromServer;
                                closeNumArrWithProject12Bug = closeNumArrWithProject12BugFromServer;
                                regressionNumArrWithProject12Bug = regressionWithProject12BugNumArrFromServer;
                                delayNumArrWithProject12Bug = delayNumArrWithProject12BugFromServer;
                                var seriesDataJsonWithProject12Bug = {"totoal12": totoalNumArrWithProject12Bug, "add12": addNumArrWithProject12Bug, "close12": closeNumArrWithProject12Bug, "regression12": regressionNumArrWithProject12Bug, "delay12": delayNumArrWithProject12Bug};


                                json_obj.legendData = legendDataWithProject12Bug;
                                json_obj.xAxisData = xAxisDataWithProject12Bug;
                                json_obj.seriesDataJson = seriesDataJsonWithProject12Bug;

                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });

                var json_str = JSON.stringify(json_obj);
                console.log('获取12级别bug,折线图参数，返回的json_str=', json_str);
                return json_str;
            }


            //2-1）项目维度，按时间（时间可自定义）统计新增一、二级新增bug、关闭bug、待回归bug等；
            function renderMapWithProjectByTime12Bug(legendData, xAxisData, seriesDataJson){
                    //先清空div中的数据 第一种：
                    document.getElementById('Bug12MapWithProject').innerHTML = "";
                    //第二种：$('#bigDiv').html("");

                    var chart;
                    var myChart;
                    var option;

                    require([
                        'echarts'/*, 'map/js/china' */
                    ], function (echarts) {

                        var option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'cross',
                                    crossStyle: {
                                        color: '#999'
                                    }
                                }
                            },
                            toolbox: {
                                feature: {
                                    dataView: {show: true, readOnly: false},
                                    magicType: {show: true, type: ['line', 'bar']},
                                    restore: {show: true},
                                    saveAsImage: {show: true}
                                }
                            },
                            legend: {
                                //data:['1808','LJG','ZG','test']
                                data: legendData,
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    //data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
                                    data: xAxisData,
                                    axisPointer: {
                                        type: 'shadow'
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        //formatter: '{value} ml'
                                        formatter: '{value} 个'
                                    }
                                },
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        formatter: '{value} 个 '
                                    }
                                }

                            ],
                            series: [
                                {
                                    name:legendData[0],
                                    type:'line',
                                    //data:[22,26,67,70,71,77,83,84,150,153,179,208,219,220,257,267,268,269]
                                    data:seriesDataJson['totoal12']
                                },
                                {
                                    name:legendData[1],
                                    type:'line',
                                    //data:[0,0,0,0,0,0,0,0,8,9,9,12,13,13,16,16,16,17]
                                    data:seriesDataJson['add12']
                                },
                                {
                                    name:legendData[2],
                                    type:'line',
                                    yAxisIndex: 1,
                                    //data:[22,26,67,70,71,76,82,83,136,138,164,189,197,198,226,236,237,237]
                                    data:seriesDataJson['close12']
                                },
                                {
                                    name:legendData[3],
                                    type:'line',
                                    yAxisIndex: 1,
                                    //data:[0,0,0,0,0,0,0,1,1,1,1,12,2,2,4,4,4,4]
                                    data:seriesDataJson['regression12']
                                },
                                {
                                    name:legendData[4],
                                    type:'line',
                                    yAxisIndex: 1,
                                    //data:[0,0,0,0,0,1,1,1,5,5,5,6,7,7,11,11,11,11]
                                    data:seriesDataJson['delay12']
                                }
                            ]
                        };

                        chart = myChart = testHelper.create(echarts, 'Bug12MapWithProject', {
                            option: option,
                            //title: '2）项目维度，按时间（时间可自定义）统计新增一、二级新增bug、关闭bug、待回归bug等；'
                        });
                    });
            }

            //渲染折线图 绘制新增bug增长和关闭曲线  参数----------------------------------------------------------
            // 3）项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线
            /*
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组
            返回值： json_str            : 返回值

             */
            function getRenderMapWithProjectByTimeAddBugAddAndCloseArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm){
                console.log("getRenderMapWithProjectByTimeAddBugAddAndCloseArgs，timeDifferenceFromForm参数==", timeDifferenceFromForm);
                var $ = layui.jquery;

                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                console.log("json_obj.lengendData=", json_obj.legendData);
                console.log("进入请求数据方法");

                $.ajax({
                            url: "/getTableForDrawMapWithProjectALongtimeNewBugAddAndClose",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm, "timeDifference":timeDifferenceFromForm},
                            datatype:"json",
                            async:false,
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);
                                console.log("，returnDataJson==============");
                                console.log(returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //项目-新增bug增长和关闭参数
                                var xAxisDataWithProjectNewAndCloseBugFromServer = [];
                                var addNumArrWithProjectNewAndCloseBugFromServer = [];
                                var closeNumArrWithProjectNewAndCloseBugFromServer = [];
                                var addNumArrWithProjectNewAndCloseBugFromServerProject0 = [];
                                var closeNumArrWithProjectNewAndCloseBugFromServerProject0 = [];


                                //循环获取[{xx,xx}, {xx,xx}] json中的数据
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item.add);
                                    //项目-新增bug增长和关闭
                                    xAxisDataWithProjectNewAndCloseBugFromServer.push(item.bug_submit_date); //日期
                                    addNumArrWithProjectNewAndCloseBugFromServer.push(item.add);  //新增
                                    closeNumArrWithProjectNewAndCloseBugFromServer.push(item.close); //关闭
                                    addNumArrWithProjectNewAndCloseBugFromServerProject0.push(item.add_project0); //add_project0
                                    closeNumArrWithProjectNewAndCloseBugFromServerProject0.push(item.close_project0); //close_project0

                                });

                                //这里未完成，要有项目‘1808’-新增 == add_project0 close_project0
                                var legendDataWithProjectNewAndCloseBug = ["新增","关闭","add_project0","close_project0"];
                                var xAxisDataWithProjectNewAndCloseBug = xAxisDataWithProjectNewAndCloseBugFromServer;

                                addNumArrWithProjectNewAndCloseBug = addNumArrWithProjectNewAndCloseBugFromServer;
                                closeNumArrWithProjectNewAndCloseBug = closeNumArrWithProjectNewAndCloseBugFromServer;
                                addNumArrWithProjectNewAndCloseBugProject0 = addNumArrWithProjectNewAndCloseBugFromServerProject0;
                                closeNumArrWithProjectNewAndCloseBugProject0 = closeNumArrWithProjectNewAndCloseBugFromServerProject0;

                                var seriesDataJsonWithProjectNewAndCloseBug = {"add": addNumArrWithProjectNewAndCloseBug, "close": closeNumArrWithProjectNewAndCloseBug,
                                                       "add_project0":addNumArrWithProjectNewAndCloseBugProject0, "close_project0":closeNumArrWithProjectNewAndCloseBugProject0};


                                json_obj.legendData = legendDataWithProjectNewAndCloseBug;
                                json_obj.xAxisData = xAxisDataWithProjectNewAndCloseBug;
                                json_obj.seriesDataJson = seriesDataJsonWithProjectNewAndCloseBug;
                                console.log("json_str==" + JSON.stringify(json_obj))

                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });

                var json_str = JSON.stringify(json_obj);
                console.log('获取新增bug增长关闭情况,折线图参数，返回的json_str=', json_str);
                return json_str;
            }


            //3-1）3）按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线
            function renderMapWithProjectByTimeAddBugAddAndClose(legendData, xAxisData, seriesDataJson){
                    //先清空div中的数据 第一种：
                    document.getElementById('AddBugAddAndCloseStatusMapWithProject').innerHTML = "";
                    //第二种：$('#bigDiv').html("");

                    var seriesDataJsonArr = ['add_project0', 'close_project0', 'add_project1', 'close_project1', 'add_project2', 'close_project2', 'add_project3', 'close_project3', 'add_project4', 'close_project4',
                                             'add_project5', 'close_project5', 'add_project6', 'close_project6', 'add_project7', 'close_project7', 'add_project8', 'close_project8', 'add_project9', 'close_project9',
                                             'add_project10', 'close_project10', 'add_project11', 'close_project11', 'add_project12', 'close_project12', 'add_project13', 'close_project13'
                    ];

                    //设置series变量，有几个project，就加几个{},是一个数组
                    /*
                     var seriesDataNotComplete = [
                                {
                                    name:legendData[0],
                                    type:'line',
                                    //data:[22,26,67,70,71,77,83,84,150,153,179,208,219,220,257,267,268,269]
                                    data:seriesDataJson['add']
                                },
                                {
                                    name:legendData[1],
                                    type:'line',
                                    //data:[0,0,0,0,0,0,0,0,8,9,9,12,13,13,16,16,16,17]
                                    data:seriesDataJson['close']
                                }
                    ];
                     */
                    var addSeriesDataNotComplete = {
                                    name:legendData[0],
                                    type:'line',
                                    data:seriesDataJson['add']
                                };
                    var closeSeriesDataNotComplete = {
                                    name:legendData[1],
                                    type:'line',
                                    data:seriesDataJson['close']
                                };

                    var seriesData = []; //最终数据，放在option里的
                    seriesData.push(addSeriesDataNotComplete);
                    seriesData.push(closeSeriesDataNotComplete);
                    for(var i=0; i< legendData.length/2 -1; i++) {
                        console.log("legendData.length" + legendData.length);
                        console.log("renderMapWithProjectByTimeAddBugAddAndClose, 获取折线图option,循环=" + i + legendData[i] );
                        var add_seriesProjectN =
                                {
                                    name:legendData[i+2],  //add_project0 close_project0
                                    type:'line',
                                    data:seriesDataJson['add_project' + i]
                                };
                        var  close_seriesProjectN   =
                                {
                                    name:legendData[i+3],  //add_project0 close_project0
                                    type:'line',
                                    data:seriesDataJson['close_project' + i]
                                };

                        seriesData.push(add_seriesProjectN);
                        seriesData.push(close_seriesProjectN);
                    }
                    console.log("seriesData==================");
                    console.log(seriesData);
                    //console.log(seriesDataNotComplete);

                    var chart;
                    var myChart;
                    var option;

                    require([
                        'echarts'/*, 'map/js/china' */
                    ], function (echarts) {

                        var option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'cross',
                                    crossStyle: {
                                        color: '#999'
                                    }
                                }
                            },
                            toolbox: {
                                feature: {
                                    dataView: {show: true, readOnly: false},
                                    magicType: {show: true, type: ['line', 'bar']},
                                    restore: {show: true},
                                    saveAsImage: {show: true}
                                }
                            },
                            legend: {
                                //data:['1808','LJG','ZG','test']
                                data: legendData,
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    //data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
                                    data: xAxisData,
                                    axisPointer: {
                                        type: 'shadow'
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        //formatter: '{value} ml'
                                        formatter: '{value} 个'
                                    }
                                },
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        formatter: '{value} 个 '
                                    }
                                }

                            ],
                            //series: seriesData
                            series: seriesData
                        };

                        chart = myChart = testHelper.create(echarts, 'AddBugAddAndCloseStatusMapWithProject', {
                            option: option,
                            //title: '3）项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线；'
                        });
                    });
            }

            //渲染折线图 绘制全部bug增长和关闭曲线，剩余情况  参数----------------------------------------------------------
            // 4）项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况
            /*
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组
            返回值： json_str            : 返回值

             */
            function getRenderMapWithProjectByTimeAlongtimeAllBugArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm){
                console.log("getRenderMapWithProjectByTimeAlongtimeAllBugArgs，timeDifferenceFromForm参数==", timeDifferenceFromForm);
                var $ = layui.jquery;

                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                console.log("json_obj.lengendData=", json_obj.legendData);
                console.log("进入请求数据方法");

                $.ajax({
                            url: "/getTableForDrawMapWithProjectALongtimeAllBug",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm, "timeDifference":timeDifferenceFromForm},
                            datatype:"json",
                            async:false,
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);
                                console.log("，returnDataJson==============");
                                console.log(returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //项目-全部bug增长和关闭参数
                                var xAxisDataWithProjectAllBugFromServer = [];

                                var addNumArrWithProjectAllBugFromServer = []; //新增
                                var closeNumArrWithProjectAllBugFromServer = []; //关闭
                                var lastNumArrWithProjectAllBugFromServer = []; //剩余
                                var totalNumArrWithProjectAllBugFromServer = []; //总数

                                var addNumArrWithProjectAllBugFromServerProject0 = []; //项目0 新增
                                var closeNumArrWithProjectAllBugFromServerProject0 = []; //项目0 关闭
                                var lastNumArrWithProjectAllBugFromServerProject0 = []; //项目0 剩余
                                var totalNumArrWithProjectAllBugFromServerProject0 = []; //项目0 总数


                                //循环获取[{xx,xx}, {xx,xx}] json中的数据
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item.add);
                                    //项目-新增bug增长和关闭
                                    xAxisDataWithProjectAllBugFromServer.push(item.bug_submit_date); //日期
                                    addNumArrWithProjectAllBugFromServer.push(item.add);  //新增
                                    closeNumArrWithProjectAllBugFromServer.push(item.close); //关闭
                                    lastNumArrWithProjectAllBugFromServer.push(item.last); //剩余bug情况

                                    addNumArrWithProjectAllBugFromServerProject0.push(item.add_project0); //add_project0
                                    closeNumArrWithProjectAllBugFromServerProject0.push(item.close_project0); //close_project0
                                    lastNumArrWithProjectAllBugFromServerProject0.push(item.last_project0); //last_project0

                                });

                                //这里未完成，要有项目‘1808’-新增 == add_project0 close_project0
                                var legendDataWithProjectAllBug = ["新增","关闭","剩余","add_project0","close_project0", "last_project0"];
                                var xAxisDataWithProjectAllBug = xAxisDataWithProjectAllBugFromServer;

                                addNumArrWithProjectAllBug = addNumArrWithProjectAllBugFromServer;
                                closeNumArrWithProjectAllBug = closeNumArrWithProjectAllBugFromServer;
                                lastNumArrWithProjectAllBug = lastNumArrWithProjectAllBugFromServer;

                                addNumArrWithProjectAllBugProject0 = addNumArrWithProjectAllBugFromServerProject0;
                                closeNumArrWithProjectAllBugProject0 = closeNumArrWithProjectAllBugFromServerProject0;
                                lastNumArrWithProjectAllBugProject0 = lastNumArrWithProjectAllBugFromServerProject0;

                                var seriesDataJsonWithProjectAllBug = {"add": addNumArrWithProjectAllBug, "close": closeNumArrWithProjectAllBug, "last":lastNumArrWithProjectAllBug,
                                                       "add_project0":addNumArrWithProjectAllBugProject0, "close_project0":closeNumArrWithProjectAllBugProject0, "last_project0":lastNumArrWithProjectAllBugProject0};


                                json_obj.legendData = legendDataWithProjectAllBug;
                                json_obj.xAxisData = xAxisDataWithProjectAllBug;
                                json_obj.seriesDataJson = seriesDataJsonWithProjectAllBug;
                                console.log("json_str==" + JSON.stringify(json_obj))

                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });

                var json_str = JSON.stringify(json_obj);
                console.log('获取全部bug增长关闭情况,折线图参数，返回的json_str=', json_str);
                return json_str;
            }

            //4-1）4）项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况
            function renderMapWithProjectByTimeAlongtimeAllBug(legendData, xAxisData, seriesDataJson){
                    console.log("legendData=，xAxisData，seriesDataJson" +  legendData);
                    console.log(legendData);
                    console.log(xAxisData);
                    console.log(seriesDataJson);
                    //先清空div中的数据 第一种：
                    document.getElementById('allBugStatusMapWithProject').innerHTML = "";
                    //第二种：$('#bigDiv').html("");

                    var seriesDataJsonArr = ['add_project0', 'close_project0', 'add_project1', 'close_project1', 'add_project2', 'close_project2', 'add_project3', 'close_project3', 'add_project4', 'close_project4',
                                             'add_project5', 'close_project5', 'add_project6', 'close_project6', 'add_project7', 'close_project7', 'add_project8', 'close_project8', 'add_project9', 'close_project9',
                                             'add_project10', 'close_project10', 'add_project11', 'close_project11', 'add_project12', 'close_project12', 'add_project13', 'close_project13'
                    ];

                    //设置series变量，有几个project，就加几个{},是一个数组
                    var addSeriesDataNotComplete = {
                                    name:legendData[0],
                                    type:'line',
                                    data:seriesDataJson['add']
                                };
                    var closeSeriesDataNotComplete = {
                                    name:legendData[1],
                                    type:'line',
                                    data:seriesDataJson['close']
                                };
                    var lastSeriesDataNotComplete = {
                                    name:legendData[2],
                                    type:'line',
                                    data:seriesDataJson['last']
                                };

                    var seriesData = []; //最终数据，放在option里的
                    seriesData.push(addSeriesDataNotComplete);
                    seriesData.push(closeSeriesDataNotComplete);
                    seriesData.push(lastSeriesDataNotComplete);
                    for(var i=0; i< legendData.length/3 -1; i++) {
                        console.log("legendData.length" + legendData.length);
                        console.log("renderMapWithProjectByTimeAlongtimeAllBug, 获取折线图option,循环=" + i + legendData[i] );
                        var add_seriesProjectN =
                                {
                                    name:legendData[i+3],  //add_project0 close_project0
                                    type:'line',
                                    data:seriesDataJson['add_project' + i]
                                };
                        var  close_seriesProjectN   =
                                {
                                    name:legendData[i+4],  //add_project0 close_project0
                                    type:'line',
                                    data:seriesDataJson['close_project' + i]
                                };
                        var  last_seriesProjectN   =
                                {
                                    name:legendData[i+5],  //add_project0 close_project0 last_project0
                                    type:'line',
                                    data:seriesDataJson['last_project' + i]
                                };

                        seriesData.push(add_seriesProjectN);
                        seriesData.push(close_seriesProjectN);
                        seriesData.push(last_seriesProjectN);
                    }
                    console.log("seriesData==================");
                    console.log(seriesData);
                    //console.log(seriesDataNotComplete);

                    var chart;
                    var myChart;
                    var option;

                    require([
                        'echarts'/*, 'map/js/china' */
                    ], function (echarts) {

                        var option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'cross',
                                    crossStyle: {
                                        color: '#999'
                                    }
                                }
                            },
                            toolbox: {
                                feature: {
                                    dataView: {show: true, readOnly: false},
                                    magicType: {show: true, type: ['line', 'bar']},
                                    restore: {show: true},
                                    saveAsImage: {show: true}
                                }
                            },
                            legend: {
                                //data:['1808','LJG','ZG','test']
                                data: legendData,
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    //data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
                                    data: xAxisData,
                                    axisPointer: {
                                        type: 'shadow'
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        //formatter: '{value} ml'
                                        formatter: '{value} 个'
                                    }
                                },
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        formatter: '{value} 个 '
                                    }
                                }

                            ],
                            //series: seriesData
                            series: seriesData
                        };

                        chart = myChart = testHelper.create(echarts, 'allBugStatusMapWithProject', {
                            option: option,
                            //title: '3）项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线；'
                        });
                    });
            }

            ///////////////////////////////////////////////////////////////////////////////////////////开发维度
             //渲染折线图 7）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线；  参数----------------------------------------------------------
            // 7-1） 7）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线； 获取参数
            /*
            参数1： startTimeFromForm             : 开始时间
            参数2： endTimeFromForm               : 结束时间
            参数3： timeDifferenceFromForm        : 时间颗粒度-季/月/周/一周/二周/三周
             */
            function getRenderMapWithDeveloperByTimeAlongtimeAddBugAddAndCloseArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm){
                console.log("getRenderMapWithDeveloperByTimeAlongtimeAddBugAddAndCloseArgs，timeDifferenceFromForm参数==", timeDifferenceFromForm);
                var $ = layui.jquery;

                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                console.log("json_obj.lengendData=", json_obj.legendData);
                console.log("getRenderMapWithDeveloperByTimeAlongtimeAddBugAddAndCloseArgs 进入请求数据方法");

                $.ajax({
                            url: "/getTableForDrawMapWithDeveloperALongtimeAddBugAddAndClose",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm, "timeDifference":timeDifferenceFromForm},
                            datatype:"json",
                            async:false,
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);

                                returnDataJsonData0Num = Object.keys(returnDataJson.data[0]).length;
                                console.log("有多少个开发json_obj.data 数据 长度= " + returnDataJsonData0Num);
                                developerNum = (returnDataJsonData0Num -14) / 7;
                                console.log("有多少个开发,换算后" + developerNum);
                                    console.log("，returnDataJson==============");
                                console.log(returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //开发 一段时间-全部bug增长和关闭参数
                                var xAxisDataWithDeveloperAllBugFromServer = [];

                                var addNumArrWithDeveloperAllBugFromServer = []; //新增
                                var closeNumArrWithDeveloperAllBugFromServer = []; //关闭
                                var lastNumArrWithDeveloperAllBugFromServer = []; //剩余
                                var totalNumArrWithDeveloperAllBugFromServer = []; //总数

                                //定义项目参数键值对
                                //var developerArgsKeyValue = {"key1":"value1"};
                                var developerArgsKeyValue = {};
                                console.log("developerArgsKeyValue == 最初：");
                                console.log(developerArgsKeyValue);
                                for(var i=0;i<developerNum;i++){
                                    developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array();  //项目0 新增
                                    //console.log("类型" + typeof(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]));
                                    developerArgsKeyValue['closeNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array(); //项目0 关闭
                                    developerArgsKeyValue['lastNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array(); //项目0 剩余
                                    developerArgsKeyValue['totalNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array(); //项目0 总数

                                    console.log("定义项目参数键值对 ");
                                    console.log(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                    console.log(developerArgsKeyValue['closeNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                    console.log(developerArgsKeyValue['lastNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                    console.log(developerArgsKeyValue['totalNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                }
                                console.log("developerArgsKeyValue == 以下：");
                                console.log(developerArgsKeyValue);


                                //循环获取[{xx,xx}, {xx,xx}] json中的数据 // 按时间循环的
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item);
                                    console.log(item);
                                    //项目-新增bug增长和关闭
                                    console.log("push不能用？？");
                                    xAxisDataWithDeveloperAllBugFromServer.push(item['bug_submit_date']); //日期
                                    addNumArrWithDeveloperAllBugFromServer.push(item.add);  //新增
                                    closeNumArrWithDeveloperAllBugFromServer.push(item.close); //关闭
                                    lastNumArrWithDeveloperAllBugFromServer.push(item.last); //剩余bug情况

                                    /*
                                    addNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.add_developer0); //add_developer0
                                    closeNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.close_developer0); //close_developer0
                                    lastNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.last_developer0); //last_developer0
                                     */
                                    //根据有多少项目来循环
                                    for(var i=0;i<developerNum;i++){
                                        console.log("addNumArrWithDeveloperAllBugFromServerDeveloper 前 + add_developer[add_developer + index]==");
                                        console.log(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                        console.log("item.add_developer=====================前");
                                        console.log(item['add_developer' + i]);
                                        developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['add_developer' + i]);

                                        console.log("addNumArrWithDeveloperAllBugFromServerDeveloper 后 + add_developer[add_developer + index]==");
                                        console.log(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                        console.log("item.add_developer=====================后");
                                        console.log(item['add_developer' + i]);
                                        developerArgsKeyValue['closeNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['close_developer' + i]);
                                        developerArgsKeyValue['lastNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['last_developer' + i]);
                                    }


                                });
                                console.log("developerArgsKeyValue == 赋值完数据后 ，以下：");
                                console.log(developerArgsKeyValue);

                                //这里未完成，要有项目‘1808’-新增 == add_Developer0 close_Developer0
                                //var legendDataWithDeveloperAllBug = ["新增","关闭","剩余","add_developer0","close_developer0", "last_developer0"];
                                var legendDataWithDeveloperAllBug = ["新增","关闭","剩余"];
                                //循环添加上折线图标签栏
                                for(var a=0;a<developerNum;a++){
                                    legendDataWithDeveloperAllBug.push("add_developer" + a);
                                    legendDataWithDeveloperAllBug.push("close_developer" + a);
                                    legendDataWithDeveloperAllBug.push("last_developer" + a);
                                }

                                var xAxisDataWithDeveloperAllBug = xAxisDataWithDeveloperAllBugFromServer;

                                addNumArrWithDeveloperAllBug = addNumArrWithDeveloperAllBugFromServer;
                                closeNumArrWithDeveloperAllBug = closeNumArrWithDeveloperAllBugFromServer;
                                lastNumArrWithDeveloperAllBug = lastNumArrWithDeveloperAllBugFromServer;
                                /*
                                addNumArrWithDeveloperAllBugDeveloper0 = addNumArrWithDeveloperAllBugFromServerDeveloper0;
                                closeNumArrWithDeveloperAllBugDeveloper0 = closeNumArrWithDeveloperAllBugFromServerDeveloper0;
                                lastNumArrWithDeveloperAllBugDeveloper0 = lastNumArrWithDeveloperAllBugFromServerDeveloper0;
                                 */
                                //var seriesDataJsonWithDeveloperAllBug = {"add": addNumArrWithDeveloperAllBug, "close": closeNumArrWithDeveloperAllBug, "last":lastNumArrWithDeveloperAllBug, "add_developer0":addNumArrWithDeveloperAllBugDeveloper0, "close_developer0":closeNumArrWithDeveloperAllBugDeveloper0, "last_developer0":lastNumArrWithDeveloperAllBugDeveloper0};
                                var seriesDataJsonWithDeveloperAllBug = {"add": addNumArrWithDeveloperAllBug, "close": closeNumArrWithDeveloperAllBug, "last":lastNumArrWithDeveloperAllBug};

                                for(var b=0;b<developerNum;b++){
                                    seriesDataJsonWithDeveloperAllBug['add_developer' + b] = developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + b]; //对应一个数组
                                    seriesDataJsonWithDeveloperAllBug['close_developer' + b] = developerArgsKeyValue['closeNumArrWithDeveloperAllBugFromServerDeveloper' + b];
                                    seriesDataJsonWithDeveloperAllBug['last_developer' + b] = developerArgsKeyValue['lastNumArrWithDeveloperAllBugFromServerDeveloper' + b];
                                }

                                json_obj.legendData = legendDataWithDeveloperAllBug;
                                json_obj.xAxisData = xAxisDataWithDeveloperAllBug;
                                json_obj.seriesDataJson = seriesDataJsonWithDeveloperAllBug;
                                console.log("json_str==" + JSON.stringify(json_obj))

                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });

                var json_str = JSON.stringify(json_obj);
                console.log('开发维度，一段时间内，获取全部bug增长关闭情况,折线图参数，返回的json_str=', json_str);
                return json_str;
            }


            //7-2）7）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线；
            /*
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组
            返回值： json_str            : 返回值
             */
            function renderMapWithDeveloperByTimeAlongtimeAddBugAddAndClose(legendData, xAxisData, seriesDataJson){
                    console.log("legendData=，xAxisData，seriesDataJson" +  legendData);
                    console.log(legendData);
                    console.log(xAxisData);
                    console.log(seriesDataJson);
                    //先清空div中的数据 第一种：
                    document.getElementById('AddBugAddAndCloseStatusMapWithDeveloper').innerHTML = "";
                    //第二种：$('#bigDiv').html("");

                    var seriesDataJsonArr = ['add_developer0', 'close_developer0', 'add_developer1', 'close_developer1', 'add_developer2', 'close_developer2', 'add_developer3', 'close_developer3', 'add_developer4', 'close_developer4',
                                             'add_developer5', 'close_developer5', 'add_developer6', 'close_developer6', 'add_developer7', 'close_developer7', 'add_developer8', 'close_developer8', 'add_developer9', 'close_developer9',
                                             'add_developer10', 'close_developer10', 'add_developer11', 'close_developer11', 'add_developer12', 'close_developer12', 'add_developer13', 'close_developer13'
                    ];

                    //设置series变量，有几个 Developer，就加几个{},是一个数组
                    var addSeriesDataNotComplete = {
                                    name:legendData[0],
                                    type:'line',
                                    data:seriesDataJson['add']
                                };
                    var closeSeriesDataNotComplete = {
                                    name:legendData[1],
                                    type:'line',
                                    data:seriesDataJson['close']
                                };
                    var lastSeriesDataNotComplete = {
                                    name:legendData[2],
                                    type:'line',
                                    data:seriesDataJson['last']
                                };

                    var seriesData = []; //最终数据，放在option里的
                    seriesData.push(addSeriesDataNotComplete);
                    seriesData.push(closeSeriesDataNotComplete);
                    seriesData.push(lastSeriesDataNotComplete);
                    for(var i=0; i< legendData.length/3 -1; i++) {
                        console.log("legendData.length" + legendData.length);
                        console.log("renderMapWithDeveloperByTimeAlongtimeAddBugAddAndClose, 获取折线图option,循环=" + i + legendData[i] );
                        var add_seriesDeveloperN =
                                {
                                    name:legendData[i*3+3],  //add_developer0 close_developer0
                                    type:'line',
                                    data:seriesDataJson['add_developer' + i]
                                };
                        var  close_seriesDeveloperN   =
                                {
                                    name:legendData[i*3+4],   //add_developer0 close_developer0
                                    type:'line',
                                    data:seriesDataJson['close_developer' + i]
                                };
                        var  last_seriesDeveloperN   =
                                {
                                    name:legendData[i*3+5],   //add_developer0 close_developer0 last_developer0
                                    type:'line',
                                    data:seriesDataJson['last_developer' + i]
                                };

                        seriesData.push(add_seriesDeveloperN);
                        seriesData.push(close_seriesDeveloperN);
                        seriesData.push(last_seriesDeveloperN);
                    }
                    console.log("seriesData==================");
                    console.log(seriesData);
                    //console.log(seriesDataNotComplete);

                    var chart;
                    var myChart;
                    var option;

                    require([
                        'echarts'/*, 'map/js/china' */
                    ], function (echarts) {

                        var option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'cross',
                                    crossStyle: {
                                        color: '#999'
                                    }
                                }
                            },
                            toolbox: {
                                feature: {
                                    dataView: {show: true, readOnly: false},
                                    magicType: {show: true, type: ['line', 'bar']},
                                    restore: {show: true},
                                    saveAsImage: {show: true}
                                }
                            },
                            legend: {
                                //data:['1808','LJG','ZG','test']
                                data: legendData,
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    data: xAxisData,
                                    axisPointer: {
                                        type: 'shadow'
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        formatter: '{value} 个'
                                    }
                                },
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        formatter: '{value} 个 '
                                    }
                                }

                            ],
                            //series: seriesData
                            series: seriesData
                        };

                        chart = myChart = testHelper.create(echarts, 'AddBugAddAndCloseStatusMapWithDeveloper', {
                            option: option,
                            //title: '8）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线 + bug剩余情况 ；；'
                        });
                    });
            }
                               ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

            /* 8开发维度，按时间（时间可自定义）统计12级bug / 新增bug、关闭bug、待回归bug等
            参数1： argElem              : 指向table的id
            参数1： argUrl               : url路径
            参数1： argStartTime         : 开始时间
            参数1： argEndTime           : 结束时间
            参数1： argTableRenderId     : 给渲染制定一个id,共其他监听调用
             */
            function renderTableAllBugDeveloper(argElem, argUrl, argStartTime, argEndTime, argTimeDifference, argTableRenderId){
                    layui.use('table',function () {
                        var table = layui.table;
                        console.log("renderTableAllBugDeveloper==参数（timeDifference）==" +  argTimeDifference);

                        table.render(   {
                            elem: '#' + argElem //指向table的id
                            , url: argUrl
                            , method: 'get'
                            , toolbar: true //显示工具栏
                            , loading: true //是否显示加载条（默认：true）
                            , where: {startTime: argStartTime, endTime: argEndTime,timeDifference: argTimeDifference}
                            , response: {
                                statusCode: 200
                            }
                            , cols: [[
                            {type: 'numbers', fixed: 'left'}//, fixed: true
                            , {checkbox: true, fixed: true}  //{type: 'checkbox'}
                            , {field: 'bug_submit_date', title: '时间', sort: true, width: 120}
                            , {field: 'project', title: '项目', sort: true, width: 80, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add', title: '新增', sort: true, width: 80}
                            , {field: 'close', title: '关闭', sort: true, width: 80}
                            , {field: 'regression', title: '回归', sort: true, width: 80}
                            , {field: 'delay', title: '延迟', width: 80}
                            , {field: 'add12', title: '新增(1-2级) ', sort: true, width: 120}
                            , {field: 'close12', title: '关闭(1-2级)', sort: true,  width: 120} //暂时先200
                            , {field: 'regression12', title: '回归(1-2级)', sort: true, width: 120}
                            , {field: 'delay12', title: '延迟(1-2级)', sort: true, width: 120}
                            , {field: 'total12', title: '总数(1-2级)', sort: true, width: 120}
                            , {field: 'bug_close_rate', title: 'bug解决率', sort: true, width: 120}
                            , {field: 'rank', title: '排名', sort: true, width: 80}
                            , {field: 'totalNum', title: '总数', sort: true, width: 80}

                            , {field: 'developer0', title: '开发0名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer0', title: '开发0新增', sort: true, width: 120}
                            , {field: 'close_developer0', title: '开发0关闭', sort: true, width: 120}
                            , {field: 'regression_developer0', title: '开发0回归', sort: true, width: 120}
                            , {field: 'delay_developer0', title: '开发0延迟', sort: true, width: 120}
                            , {field: 'total_developer0', title: '开发0总数', sort: true, width: 120}

                            , {field: 'developer1', title: '开发1名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer1', title: '开发1新增', sort: true, width: 120}
                            , {field: 'close_developer1', title: '开发1关闭', sort: true, width: 120}
                            , {field: 'regression_developer1', title: '开发1回归', sort: true, width: 120}
                            , {field: 'delay_developer1', title: '开发1延迟', sort: true, width: 120}
                            , {field: 'total_developer1', title: '开发1总数', sort: true, width: 120}

                            , {field: 'developer2', title: '开发2名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer2', title: '开发2新增', sort: true, width: 120}
                            , {field: 'close_developer2', title: '开发2关闭', sort: true, width: 120}
                            , {field: 'regression_developer2', title: '开发2回归', sort: true, width: 120}
                            , {field: 'delay_developer2', title: '开发2延迟', sort: true, width: 120}
                            , {field: 'total_developer2', title: '开发2总数', sort: true, width: 120}

                            , {field: 'developer3', title: '开发3名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer3', title: '开发3新增', sort: true, width: 120}
                            , {field: 'close_developer3', title: '开发3关闭', sort: true, width: 120}
                            , {field: 'regression_developer3', title: '开发3回归', sort: true, width: 120}
                            , {field: 'delay_developer3', title: '开发3延迟', sort: true, width: 120}
                            , {field: 'total_developer3', title: '开发3总数', sort: true, width: 120}

                            , {field: 'developer4', title: '开发4名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer4', title: '开发4新增', sort: true, width: 120}
                            , {field: 'close_developer4', title: '开发4关闭', sort: true, width: 120}
                            , {field: 'regression_developer4', title: '开发4回归', sort: true, width: 120}
                            , {field: 'delay_developer4', title: '开发4延迟', sort: true, width: 120}
                            , {field: 'total_developer4', title: '开发4总数', sort: true, width: 120}

                            , {field: 'developer5', title: '开发5名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer5', title: '开发5新增', sort: true, width: 120}
                            , {field: 'close_developer5', title: '开发5关闭', sort: true, width: 120}
                            , {field: 'regression_developer5', title: '开发5回归', sort: true, width: 120}
                            , {field: 'delay_developer5', title: '开发5延迟', sort: true, width: 120}
                            , {field: 'total_developer5', title: '开发5总数', sort: true, width: 120}

                            , {field: 'developer6', title: '开发6名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer6', title: '开发6新增', sort: true, width: 120}
                            , {field: 'close_developer6', title: '开发6关闭', sort: true, width: 120}
                            , {field: 'regression_developer6', title: '开发6回归', sort: true, width: 120}
                            , {field: 'delay_developer6', title: '开发6延迟', sort: true, width: 120}
                            , {field: 'total_developer6', title: '开发6总数', sort: true, width: 120}

                            , {field: 'developer7', title: '开发7名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer7', title: '开发7新增', sort: true, width: 120}
                            , {field: 'close_developer7', title: '开发7关闭', sort: true, width: 120}
                            , {field: 'regression_developer7', title: '开发7回归', sort: true, width: 120}
                            , {field: 'delay_developer7', title: '开发7延迟', sort: true, width: 120}
                            , {field: 'total_developer7', title: '开发7总数', sort: true, width: 120}

                            , {field: 'developer8', title: '开发8名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer8', title: '开发8新增', sort: true, width: 120}
                            , {field: 'close_developer8', title: '开发8关闭', sort: true, width: 120}
                            , {field: 'regression_developer8', title: '开发8回归', sort: true, width: 120}
                            , {field: 'delay_developer8', title: '开发8延迟', sort: true, width: 120}
                            , {field: 'total_developer8', title: '开发8总数', sort: true, width: 120}

                            , {field: 'developer9', title: '开发9名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer9', title: '开发9新增', sort: true, width: 120}
                            , {field: 'close_developer9', title: '开发9关闭', sort: true, width: 120}
                            , {field: 'regression_developer9', title: '开发9回归', sort: true, width: 120}
                            , {field: 'delay_developer9', title: '开发9延迟', sort: true, width: 120}
                            , {field: 'total_developer9', title: '开发9总数', sort: true, width: 120}

                            , {field: 'developer10', title: '开发10名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer10', title: '开发10新增', sort: true, width: 120}
                            , {field: 'close_developer10', title: '开发10关闭', sort: true, width: 120}
                            , {field: 'regression_developer10', title: '开发10回归', sort: true, width: 120}
                            , {field: 'delay_developer10', title: '开发10延迟', sort: true, width: 120}
                            , {field: 'total_developer10', title: '开发10总数', sort: true, width: 120}

                            , {field: 'developer11', title: '开发11名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer11', title: '开发11新增', sort: true, width: 120}
                            , {field: 'close_developer11', title: '开发11关闭', sort: true, width: 120}
                            , {field: 'regression_developer11', title: '开发11回归', sort: true, width: 120}
                            , {field: 'delay_developer11', title: '开发11延迟', sort: true, width: 120}
                            , {field: 'total_developer11', title: '开发11总数', sort: true, width: 120}

                            , {field: 'developer12', title: '开发12名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer12', title: '开发12新增', sort: true, width: 120}
                            , {field: 'close_developer12', title: '开发12关闭', sort: true, width: 120}
                            , {field: 'regression_developer12', title: '开发12回归', sort: true, width: 120}
                            , {field: 'delay_developer12', title: '开发12延迟', sort: true, width: 120}
                            , {field: 'total_developer12', title: '开发12总数', sort: true, width: 120}

                            , {field: 'developer13', title: '开发13名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'add_developer13', title: '开发13新增', sort: true, width: 120}
                            , {field: 'close_developer13', title: '开发13关闭', sort: true, width: 120}
                            , {field: 'regression_developer13', title: '开发13回归', sort: true, width: 120}
                            , {field: 'delay_developer13', title: '开发13延迟', sort: true, width: 120}
                            , {field: 'total_developer13', title: '开发13总数', sort: true, width: 120}
                        ]]
                            , id: argTableRenderId //给渲染制定一个id,共其他监听调用
                            , page: false
                            , height: 400
                        });
                });

            }


             //渲染折线图 绘制全部bug增长和关闭曲线，剩余情况  参数----------------------------------------------------------
            // 8-1） 8）开发维度,按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况 获取参数
            /*
            参数1： startTimeFromForm             : 开始时间
            参数2： endTimeFromForm               : 结束时间
            参数3： timeDifferenceFromForm        : 时间颗粒度-季/月/周/一周/二周/三周
             */
            function getRenderMapWithDeveloperByTimeAlongtimeAllBugArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm){
                console.log("getRenderMapWithDeveloperByTimeAlongtimeAllBugArgs，timeDifferenceFromForm参数==", timeDifferenceFromForm);
                var $ = layui.jquery;

                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                console.log("json_obj.lengendData=", json_obj.legendData);
                console.log("进入请求数据方法");

                $.ajax({
                            url: "/getTableForDrawMapWithDeveloperALongtimeAllBug",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm, "timeDifference":timeDifferenceFromForm},
                            datatype:"json",
                            async:false,
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);

                                returnDataJsonData0Num = Object.keys(returnDataJson.data[0]).length;
                                console.log("有多少个开发json_obj.data 数据 长度= " + returnDataJsonData0Num);
                                developerNum = (returnDataJsonData0Num -14) / 7;
                                console.log("有多少个开发,换算后" + developerNum);
                                    console.log("，returnDataJson==============");
                                console.log(returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //开发 一段时间-全部bug增长和关闭参数
                                var xAxisDataWithDeveloperAllBugFromServer = [];

                                var addNumArrWithDeveloperAllBugFromServer = []; //新增
                                var closeNumArrWithDeveloperAllBugFromServer = []; //关闭
                                var lastNumArrWithDeveloperAllBugFromServer = []; //剩余
                                var totalNumArrWithDeveloperAllBugFromServer = []; //总数

                                //定义项目参数键值对
                                //var developerArgsKeyValue = {"key1":"value1"};
                                var developerArgsKeyValue = {};
                                console.log("developerArgsKeyValue == 最初：");
                                console.log(developerArgsKeyValue);
                                for(var i=0;i<developerNum;i++){
                                    developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array();  //项目0 新增
                                    //console.log("类型" + typeof(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]));
                                    developerArgsKeyValue['closeNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array(); //项目0 关闭
                                    developerArgsKeyValue['lastNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array(); //项目0 剩余
                                    developerArgsKeyValue['totalNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array(); //项目0 总数

                                    console.log("定义项目参数键值对 ");
                                    console.log(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                    console.log(developerArgsKeyValue['closeNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                    console.log(developerArgsKeyValue['lastNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                    console.log(developerArgsKeyValue['totalNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                }
                                console.log("developerArgsKeyValue == 以下：");
                                console.log(developerArgsKeyValue);


                                //循环获取[{xx,xx}, {xx,xx}] json中的数据 // 按时间循环的
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item);
                                    console.log(item);
                                    //项目-新增bug增长和关闭
                                    console.log("push不能用？？");
                                    xAxisDataWithDeveloperAllBugFromServer.push(item['bug_submit_date']); //日期
                                    addNumArrWithDeveloperAllBugFromServer.push(item.add);  //新增
                                    closeNumArrWithDeveloperAllBugFromServer.push(item.close); //关闭
                                    lastNumArrWithDeveloperAllBugFromServer.push(item.last); //剩余bug情况

                                    /*
                                    addNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.add_developer0); //add_developer0
                                    closeNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.close_developer0); //close_developer0
                                    lastNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.last_developer0); //last_developer0
                                     */
                                    //根据有多少项目来循环
                                    for(var i=0;i<developerNum;i++){
                                        console.log("addNumArrWithDeveloperAllBugFromServerDeveloper 前 + add_developer[add_developer + index]==");
                                        console.log(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                        console.log("item.add_developer=====================前");
                                        console.log(item['add_developer' + i]);
                                        developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['add_developer' + i]);

                                        console.log("addNumArrWithDeveloperAllBugFromServerDeveloper 后 + add_developer[add_developer + index]==");
                                        console.log(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                        console.log("item.add_developer=====================后");
                                        console.log(item['add_developer' + i]);
                                        developerArgsKeyValue['closeNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['close_developer' + i]);
                                        developerArgsKeyValue['lastNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['last_developer' + i]);
                                    }


                                });
                                console.log("developerArgsKeyValue == 赋值完数据后 ，以下：");
                                console.log(developerArgsKeyValue);

                                //这里未完成，要有项目‘1808’-新增 == add_Developer0 close_Developer0
                                //var legendDataWithDeveloperAllBug = ["新增","关闭","剩余","add_developer0","close_developer0", "last_developer0"];
                                var legendDataWithDeveloperAllBug = ["新增","关闭","剩余"];
                                //循环添加上折线图标签栏
                                for(var a=0;a<developerNum;a++){
                                    legendDataWithDeveloperAllBug.push("add_developer" + a);
                                    legendDataWithDeveloperAllBug.push("close_developer" + a);
                                    legendDataWithDeveloperAllBug.push("last_developer" + a);
                                }

                                var xAxisDataWithDeveloperAllBug = xAxisDataWithDeveloperAllBugFromServer;

                                addNumArrWithDeveloperAllBug = addNumArrWithDeveloperAllBugFromServer;
                                closeNumArrWithDeveloperAllBug = closeNumArrWithDeveloperAllBugFromServer;
                                lastNumArrWithDeveloperAllBug = lastNumArrWithDeveloperAllBugFromServer;
                                /*
                                addNumArrWithDeveloperAllBugDeveloper0 = addNumArrWithDeveloperAllBugFromServerDeveloper0;
                                closeNumArrWithDeveloperAllBugDeveloper0 = closeNumArrWithDeveloperAllBugFromServerDeveloper0;
                                lastNumArrWithDeveloperAllBugDeveloper0 = lastNumArrWithDeveloperAllBugFromServerDeveloper0;
                                 */
                                //var seriesDataJsonWithDeveloperAllBug = {"add": addNumArrWithDeveloperAllBug, "close": closeNumArrWithDeveloperAllBug, "last":lastNumArrWithDeveloperAllBug, "add_developer0":addNumArrWithDeveloperAllBugDeveloper0, "close_developer0":closeNumArrWithDeveloperAllBugDeveloper0, "last_developer0":lastNumArrWithDeveloperAllBugDeveloper0};
                                var seriesDataJsonWithDeveloperAllBug = {"add": addNumArrWithDeveloperAllBug, "close": closeNumArrWithDeveloperAllBug, "last":lastNumArrWithDeveloperAllBug};

                                for(var b=0;b<developerNum;b++){
                                    seriesDataJsonWithDeveloperAllBug['add_developer' + b] = developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + b]; //对应一个数组
                                    seriesDataJsonWithDeveloperAllBug['close_developer' + b] = developerArgsKeyValue['closeNumArrWithDeveloperAllBugFromServerDeveloper' + b];
                                    seriesDataJsonWithDeveloperAllBug['last_developer' + b] = developerArgsKeyValue['lastNumArrWithDeveloperAllBugFromServerDeveloper' + b];
                                }

                                json_obj.legendData = legendDataWithDeveloperAllBug;
                                json_obj.xAxisData = xAxisDataWithDeveloperAllBug;
                                json_obj.seriesDataJson = seriesDataJsonWithDeveloperAllBug;
                                console.log("json_str==" + JSON.stringify(json_obj))

                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });

                var json_str = JSON.stringify(json_obj);
                console.log('开发维度，一段时间内，获取全部bug增长关闭情况,折线图参数，返回的json_str=', json_str);
                return json_str;
            }


            //8-2）8）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况
            /*
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组
            返回值： json_str            : 返回值
             */
            function renderMapWithDeveloperByTimeAlongtimeAllBug(legendData, xAxisData, seriesDataJson){
                    console.log("legendData=，xAxisData，seriesDataJson" +  legendData);
                    console.log(legendData);
                    console.log(xAxisData);
                    console.log(seriesDataJson);
                    //先清空div中的数据 第一种：
                    document.getElementById('allBugStatusMapWithDeveloper').innerHTML = "";
                    //第二种：$('#bigDiv').html("");

                    var seriesDataJsonArr = ['add_developer0', 'close_developer0', 'add_developer1', 'close_developer1', 'add_developer2', 'close_developer2', 'add_developer3', 'close_developer3', 'add_developer4', 'close_developer4',
                                             'add_developer5', 'close_developer5', 'add_developer6', 'close_developer6', 'add_developer7', 'close_developer7', 'add_developer8', 'close_developer8', 'add_developer9', 'close_developer9',
                                             'add_developer10', 'close_developer10', 'add_developer11', 'close_developer11', 'add_developer12', 'close_developer12', 'add_developer13', 'close_developer13'
                    ];

                    //设置series变量，有几个 Developer，就加几个{},是一个数组
                    var addSeriesDataNotComplete = {
                                    name:legendData[0],
                                    type:'line',
                                    data:seriesDataJson['add']
                                };
                    var closeSeriesDataNotComplete = {
                                    name:legendData[1],
                                    type:'line',
                                    data:seriesDataJson['close']
                                };
                    var lastSeriesDataNotComplete = {
                                    name:legendData[2],
                                    type:'line',
                                    data:seriesDataJson['last']
                                };

                    var seriesData = []; //最终数据，放在option里的
                    seriesData.push(addSeriesDataNotComplete);
                    seriesData.push(closeSeriesDataNotComplete);
                    seriesData.push(lastSeriesDataNotComplete);
                    for(var i=0; i< legendData.length/3 -1; i++) {
                        console.log("legendData.length" + legendData.length);
                        console.log("renderMapWithDeveloperByTimeAlongtimeAllBug, 获取折线图option,循环=" + i + legendData[i] );
                        var add_seriesDeveloperN =
                                {
                                    name:legendData[i*3+3],  //add_developer0 close_developer0
                                    type:'line',
                                    data:seriesDataJson['add_developer' + i]
                                };
                        var  close_seriesDeveloperN   =
                                {
                                    name:legendData[i*3+4],   //add_developer0 close_developer0
                                    type:'line',
                                    data:seriesDataJson['close_developer' + i]
                                };
                        var  last_seriesDeveloperN   =
                                {
                                    name:legendData[i*3+5],   //add_developer0 close_developer0 last_developer0
                                    type:'line',
                                    data:seriesDataJson['last_developer' + i]
                                };

                        seriesData.push(add_seriesDeveloperN);
                        seriesData.push(close_seriesDeveloperN);
                        seriesData.push(last_seriesDeveloperN);
                    }
                    console.log("seriesData==================");
                    console.log(seriesData);
                    //console.log(seriesDataNotComplete);

                    var chart;
                    var myChart;
                    var option;

                    require([
                        'echarts'/*, 'map/js/china' */
                    ], function (echarts) {

                        var option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'cross',
                                    crossStyle: {
                                        color: '#999'
                                    }
                                }
                            },
                            toolbox: {
                                feature: {
                                    dataView: {show: true, readOnly: false},
                                    magicType: {show: true, type: ['line', 'bar']},
                                    restore: {show: true},
                                    saveAsImage: {show: true}
                                }
                            },
                            legend: {
                                //data:['1808','LJG','ZG','test']
                                data: legendData,
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    data: xAxisData,
                                    axisPointer: {
                                        type: 'shadow'
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        formatter: '{value} 个'
                                    }
                                },
                                {
                                    type: 'value',
                                    name: 'bug数量',
                                    min: 0,
                                    max: 500,
                                    interval: 100,
                                    axisLabel: {
                                        formatter: '{value} 个 '
                                    }
                                }

                            ],
                            //series: seriesData
                            series: seriesData
                        };

                        chart = myChart = testHelper.create(echarts, 'allBugStatusMapWithDeveloper', {
                            option: option,
                            //title: '8）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线 + bug剩余情况 ；；'
                        });
                    });
            }

                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //9） 开发维度，按时间（时间可自定义）统计软件自测考量：相比较这段时间产生的所有bug，易bug产生比率；
            /*
            参数1： argElem              : 指向table的id
            参数1： argUrl               : url路径
            参数1： argStartTime         : 开始时间
            参数1： argEndTime           : 结束时间
            参数1： argTableRenderId     : 给渲染制定一个id,共其他监听调用
            id easyBugTableWithDeveloper
             */
            function renderTableEasyBugDeveloper(argElem, argUrl, argStartTime, argEndTime, argTableRenderId)   {
                    layui.use('table',function () {
                        var table = layui.table;
                        console.log("renderTableEasyBugDeveloper==参数（ argStartTime, argEndTime）==" +  argStartTime + argEndTime);

                        table.render(   {
                            elem: '#' + argElem //指向table的id
                            , url: argUrl
                            , method: 'get'
                            , toolbar: true //显示工具栏
                            , loading: true //是否显示加载条（默认：true）
                            , where: {startTime: argStartTime, endTime: argEndTime}
                            , response: {
                                statusCode: 200
                            }
                            , cols: [[
                            {type: 'numbers', fixed: 'left'}//, fixed: true
                            , {checkbox: true, fixed: true}  //{type: 'checkbox'}
                            , {field: 'bug_submit_date', title: '时间', sort: true, width: 150}
                            , {field: 'project', title: '项目', sort: true, width: 80, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate', title: '易bug比率', sort: true, width: 120}

                            , {field: 'developer0', title: '开发0名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer0', title: '开发0易bug', sort: true, width: 120}

                            , {field: 'developer1', title: '开发1名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer1', title: '开发1易bug', sort: true, width: 120}

                            , {field: 'developer2', title: '开发2名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer2', title: '开发2易bug', sort: true, width: 120}

                            , {field: 'developer3', title: '开发3名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer3', title: '开发3易bug', sort: true, width: 120}

                            , {field: 'developer4', title: '开发4名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer4', title: '开发4易bug', sort: true, width: 120}

                            , {field: 'developer5', title: '开发5名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer5', title: '开发5易bug', sort: true, width: 120}

                            , {field: 'developer6', title: '开发6名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer6', title: '开发6易bug', sort: true, width: 120}

                            , {field: 'developer7', title: '开发7名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer7', title: '开发7易bug', sort: true, width: 120}

                            , {field: 'developer8', title: '开发8名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer8', title: '开发8易bug', sort: true, width: 120}

                            , {field: 'developer9', title: '开发9名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer9', title: '开发9易bug', sort: true, width: 120}

                            , {field: 'developer10', title: '开发10名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer10', title: '开发10易bug', sort: true, width: 120}

                            , {field: 'developer11', title: '开发11名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer11', title: '开发11易bug', sort: true, width: 120}

                            , {field: 'developer12', title: '开发12名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer12', title: '开发12易bug', sort: true, width: 120}

                            , {field: 'developer13', title: '开发13名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer13', title: '开发13易bug', sort: true, width: 120}
                        ]]
                            , id: argTableRenderId //给渲染制定一个id,共其他监听调用
                            , page: false
                            , height: 400
                        });
                });

            }

            // 11）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线；1/2    月/周/季
            /*
            参数1： argElem              : 指向table的id
            参数1： argUrl               : url路径
            参数1： argStartTime         : 开始时间
            参数1： argEndTime           : 结束时间
            参数1： argTableRenderId     : 给渲染制定一个id,共其他监听调用
            id easyBugTableWithDeveloper
             */
            function renderTableEasyBugALongtimeDeveloper(argElem, argUrl, argStartTime, argEndTime, argTimeDifference, argTableRenderId)   {
                    layui.use('table',function () {
                        var table = layui.table;
                        console.log("renderTableEasyBugDeveloper==参数（ argStartTime, argEndTime,argTimeDifference）==" +  argStartTime + argEndTime + argTimeDifference);

                        table.render(   {
                            elem: '#' + argElem //指向table的id
                            , url: argUrl
                            , method: 'get'
                            , toolbar: true //显示工具栏
                            , loading: true //是否显示加载条（默认：true）
                            , where: {startTime: argStartTime, endTime: argEndTime, timeDifference: argTimeDifference}
                            , response: {
                                statusCode: 200
                            }
                            , cols: [[
                            {type: 'numbers', fixed: 'left'}//, fixed: true
                            , {checkbox: true, fixed: true}  //{type: 'checkbox'}
                            , {field: 'bug_submit_date', title: '时间', sort: true, width: 150}
                            , {field: 'project', title: '项目', sort: true, width: 80, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate', title: '易bug比率', sort: true, width: 120}

                            , {field: 'developer0', title: '开发0名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer0', title: '开发0易bug', sort: true, width: 120}

                            , {field: 'developer1', title: '开发1名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer1', title: '开发1易bug', sort: true, width: 120}

                            , {field: 'developer2', title: '开发2名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer2', title: '开发2易bug', sort: true, width: 120}

                            , {field: 'developer3', title: '开发3名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer3', title: '开发3易bug', sort: true, width: 120}

                            , {field: 'developer4', title: '开发4名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer4', title: '开发4易bug', sort: true, width: 120}

                            , {field: 'developer5', title: '开发5名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer5', title: '开发5易bug', sort: true, width: 120}

                            , {field: 'developer6', title: '开发6名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer6', title: '开发6易bug', sort: true, width: 120}

                            , {field: 'developer7', title: '开发7名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer7', title: '开发7易bug', sort: true, width: 120}

                            , {field: 'developer8', title: '开发8名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer8', title: '开发8易bug', sort: true, width: 120}

                            , {field: 'developer9', title: '开发9名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer9', title: '开发9易bug', sort: true, width: 120}

                            , {field: 'developer10', title: '开发10名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer10', title: '开发10易bug', sort: true, width: 120}

                            , {field: 'developer11', title: '开发11名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer11', title: '开发11易bug', sort: true, width: 120}

                            , {field: 'developer12', title: '开发12名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer12', title: '开发12易bug', sort: true, width: 120}

                            , {field: 'developer13', title: '开发13名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'easy_bug_rate_developer13', title: '开发13易bug', sort: true, width: 120}
                        ]]
                            , id: argTableRenderId //给渲染制定一个id,共其他监听调用
                            , page: false
                            , height: 400
                        });
                });

            }

            /*11-1) 参数，折线图，开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线；1/2    月/周/季
            参数1： startTimeFromForm             : 开始时间
            参数2： endTimeFromForm               : 结束时间
            参数3： timeDifferenceFromForm        : 时间颗粒度-季/月/周/一周/二周/三周
             */
            function getRenderMapWithDeveloperByTimeAlongtimeEasyBugArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm){
                console.log("getRenderMapWithDeveloperByTimeAlongtimeEasyBugArgs，timeDifferenceFromForm参数==", timeDifferenceFromForm);
                var $ = layui.jquery;

                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                console.log("json_obj.lengendData=", json_obj.legendData);
                console.log("进入请求数据方法");

                $.ajax({
                            url: "/getEasyBugTableForDrawMapWithDeveloper",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm, "timeDifference":timeDifferenceFromForm},
                            datatype:"json",
                            async:false,
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);

                                returnDataJsonData0Num = Object.keys(returnDataJson.data[0]).length;
                                console.log("有多少个开发json_obj.data 数据 长度= " + returnDataJsonData0Num);
                                developerNum = (returnDataJsonData0Num -3) / 2;
                                console.log("有多少个开发,换算后" + developerNum);
                                    console.log("，returnDataJson==============");
                                console.log(returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //开发 一段时间-全部bug增长和关闭参数
                                var xAxisDataWithDeveloperAllBugFromServer = [];

                                var easyBugRateNumArrWithDeveloperAllBugFromServer = []; //易bug比率

                                //定义项目参数键值对
                                //var developerArgsKeyValue = {"key1":"value1"};
                                var developerArgsKeyValue = {};
                                console.log("developerArgsKeyValue == 最初：");
                                console.log(developerArgsKeyValue);
                                for(var i=0;i<developerNum;i++){
                                    developerArgsKeyValue['easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array();  //开发0 易bug比率
                                    //console.log("类型" + typeof(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]));

                                    console.log("定义项目参数键值对 ");
                                    console.log(developerArgsKeyValue['easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper' + i]);  //开发0 易bug比率
                                }
                                console.log("developerArgsKeyValue == 以下：");
                                console.log(developerArgsKeyValue);


                                //循环获取[{xx,xx}, {xx,xx}] json中的数据 // 按时间循环的
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item);
                                    console.log(item);
                                    //项目-新增bug增长和关闭
                                    console.log("push不能用？？");
                                    xAxisDataWithDeveloperAllBugFromServer.push(item['bug_submit_date']); //日期
                                    easyBugRateNumArrWithDeveloperAllBugFromServer.push(item.easy_bug_rate);  // 易bug比率

                                    /*
                                    addNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.add_developer0); //add_developer0
                                    closeNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.close_developer0); //close_developer0
                                    lastNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.last_developer0); //last_developer0
                                     */
                                    //根据有多少项目来循环
                                    for(var i=0;i<developerNum;i++){
                                        console.log("easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper 前 + easy_bug_rate_developer[easy_bug_rate_developer + index]==");
                                        console.log(developerArgsKeyValue['easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                        console.log("item.easy_bug_rate_developer=====================前");
                                        console.log(item['easy_bug_rate_developer' + i]);
                                        developerArgsKeyValue['easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['easy_bug_rate_developer' + i]);

                                        console.log("easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper 后 + easy_bug_rate_developer[easy_bug_rate_developer + index]==");
                                        console.log(developerArgsKeyValue['easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                        console.log("item.easy_bug_rate_developer=====================后");
                                        console.log(item['easy_bug_rate_developer' + i]);
                                    }


                                });
                                console.log("developerArgsKeyValue == 赋值完数据后 ，以下：");
                                console.log(developerArgsKeyValue);

                                //这里未完成，要有项目‘1808’-新增 == add_Developer0 close_Developer0
                                //var legendDataWithDeveloperAllBug = ["新增","关闭","剩余","add_developer0","close_developer0", "last_developer0"];
                                var legendDataWithDeveloperAllBug = ["易bug率"];
                                //循环添加上折线图标签栏
                                for(var a=0;a<developerNum;a++){
                                    legendDataWithDeveloperAllBug.push("easy_bug_rate_developer" + a);
                                }

                                var xAxisDataWithDeveloperAllBug = xAxisDataWithDeveloperAllBugFromServer;

                                easyBugRateNumArrWithDeveloperAllBug = easyBugRateNumArrWithDeveloperAllBugFromServer;
                                /*
                                addNumArrWithDeveloperAllBugDeveloper0 = addNumArrWithDeveloperAllBugFromServerDeveloper0;
                                closeNumArrWithDeveloperAllBugDeveloper0 = closeNumArrWithDeveloperAllBugFromServerDeveloper0;
                                lastNumArrWithDeveloperAllBugDeveloper0 = lastNumArrWithDeveloperAllBugFromServerDeveloper0;
                                 */
                                //var seriesDataJsonWithDeveloperAllBug = {"add": addNumArrWithDeveloperAllBug, "close": closeNumArrWithDeveloperAllBug, "last":lastNumArrWithDeveloperAllBug, "add_developer0":addNumArrWithDeveloperAllBugDeveloper0, "close_developer0":closeNumArrWithDeveloperAllBugDeveloper0, "last_developer0":lastNumArrWithDeveloperAllBugDeveloper0};
                                var seriesDataJsonWithDeveloperAllBug = {"easy_bug_rate": easyBugRateNumArrWithDeveloperAllBug};

                                for(var b=0;b<developerNum;b++){
                                    seriesDataJsonWithDeveloperAllBug['easy_bug_rate_developer' + b] = developerArgsKeyValue['easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper' + b]; //对应一个数组
                                }

                                json_obj.legendData = legendDataWithDeveloperAllBug;
                                json_obj.xAxisData = xAxisDataWithDeveloperAllBug;
                                json_obj.seriesDataJson = seriesDataJsonWithDeveloperAllBug;
                                console.log("json_str==" + JSON.stringify(json_obj))

                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });

                var json_str = JSON.stringify(json_obj);
                console.log('11）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线；1/2    月/周/季，返回的json_str=', json_str);
                return json_str;
            }


            // easyBugStatusMapWithDeveloper
            /*11-2) 折线图，开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线；1/2    月/周/季
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组
            返回值： json_str            : 返回值
            div id == easyBugStatusMapWithDeveloper
             */
            function renderMapWithDeveloperByTimeAlongtimeEasyBug(legendData, xAxisData, seriesDataJson){
                    console.log("legendData=，xAxisData，seriesDataJson" +  legendData);
                    console.log(legendData);
                    console.log(xAxisData);
                    console.log(seriesDataJson);
                    //先清空div中的数据 第一种：
                    document.getElementById('easyBugStatusMapWithDeveloper').innerHTML = "";
                    //第二种：$('#bigDiv').html("");

                    var seriesDataJsonArr = ['add_developer0', 'close_developer0', 'add_developer1', 'close_developer1', 'add_developer2', 'close_developer2', 'add_developer3', 'close_developer3', 'add_developer4', 'close_developer4',
                                             'add_developer5', 'close_developer5', 'add_developer6', 'close_developer6', 'add_developer7', 'close_developer7', 'add_developer8', 'close_developer8', 'add_developer9', 'close_developer9',
                                             'add_developer10', 'close_developer10', 'add_developer11', 'close_developer11', 'add_developer12', 'close_developer12', 'add_developer13', 'close_developer13'
                    ];

                    //设置series变量，有几个 Developer，就加几个{},是一个数组
                    var easyBugRateSeriesDataNotComplete = {
                                    name:legendData[0],
                                    type:'line',
                                    data:seriesDataJson['easy_bug_rate']
                                };

                    var seriesData = []; //最终数据，放在option里的
                    seriesData.push(easyBugRateSeriesDataNotComplete);

                    for(var i=0; i< legendData.length -1; i++) {
                        console.log("legendData.length" + legendData.length);
                        console.log("renderMapWithDeveloperByTimeAlongtimeEasyBug, 获取折线图option,循环=" + i + legendData[i] );
                        var easyBugRate_seriesDeveloperN =
                                {
                                    name:legendData[i+1],  //add_developer0 close_developer0
                                    type:'line',
                                    data:seriesDataJson['easy_bug_rate_developer' + i]
                                };

                        seriesData.push(easyBugRate_seriesDeveloperN);
                    }
                    console.log("seriesData==================");
                    console.log(seriesData);
                    //console.log(seriesDataNotComplete);

                    var chart;
                    var myChart;
                    var option;

                    require([
                        'echarts'/*, 'map/js/china' */
                    ], function (echarts) {

                        var option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'cross',
                                    crossStyle: {
                                        color: '#999'
                                    }
                                }
                            },
                            toolbox: {
                                feature: {
                                    dataView: {show: true, readOnly: false},
                                    magicType: {show: true, type: ['line', 'bar']},
                                    restore: {show: true},
                                    saveAsImage: {show: true}
                                }
                            },
                            legend: {
                                //data:['1808','LJG','ZG','test']
                                data: legendData,
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    data: xAxisData,
                                    axisPointer: {
                                        type: 'shadow'
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value',
                                    name: '易bug率',
                                    min: 0,
                                    max: 100,
                                    interval: 10,
                                    axisLabel: {
                                        formatter: '{value} %'
                                    }
                                },
                                {
                                    type: 'value',
                                    name: '易bug率',
                                    min: 0,
                                    max: 100,
                                    interval: 10,
                                    axisLabel: {
                                        formatter: '{value} % '
                                    }
                                }

                            ],
                            //series: seriesData
                            series: seriesData
                        };

                        chart = myChart = testHelper.create(echarts, 'easyBugStatusMapWithDeveloper', {
                            option: option,
                            //title: 11）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线；1/2    月/周/季；'
                        });
                    });
            }

            // 10）开发维度，按时间（时间可自定义）统计bug解决的及时性考量：一二级bug一定时间内（可自定义）的解决率，三四级bug一定时间内（可自定义时间）
            /*
            参数1： argElem              : 指向table的id
            参数2： argUrl               : url路径
            参数3： argStartTime         : 开始时间
            参数4： argEndTime           : 结束时间
            参数5： argTableRenderId     : 给渲染制定一个id,共其他监听调用
            id
             */
            function renderTableBugSolveRateALongtimeDeveloper(argElem, argUrl, argStartTime, argEndTime, argTimeDifference, argTableRenderId)   {
                    layui.use('table',function () {
                        var table = layui.table;
                        console.log("renderTableBugSolveRateALongtimeDeveloper==参数（ argStartTime, argEndTime,argTimeDifference）==" +  argStartTime + argEndTime + argTimeDifference);

                        table.render(   {
                            elem: '#' + argElem //指向table的id
                            , url: argUrl
                            , method: 'get'
                            , toolbar: true //显示工具栏
                            , loading: true //是否显示加载条（默认：true）
                            , where: {startTime: argStartTime, endTime: argEndTime, timeDifference: argTimeDifference}
                            , response: {
                                statusCode: 200
                            }
                            , cols: [[
                            {type: 'numbers', fixed: 'left'}//, fixed: true
                            , {checkbox: true, fixed: true}  //{type: 'checkbox'}
                            , {field: 'bug_submit_date', title: '时间', sort: true, width: 150}
                            , {field: 'project', title: '项目', sort: true, width: 80, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate', title: '12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate', title: '34级bug解决率', sort: true, width: 120}

                            , {field: 'developer0', title: '开发0名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer0', title: '开发0 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer0', title: '开发0 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer1', title: '开发1名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer1', title: '开发1 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer1', title: '开发1 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer2', title: '开发2名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer2', title: '开发2 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer2', title: '开发2 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer3', title: '开发3名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer3', title: '开发3 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer3', title: '开发3 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer4', title: '开发4名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer4', title: '开发4 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer4', title: '开发4 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer5', title: '开发5名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer5', title: '开发5 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer5', title: '开发5 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer6', title: '开发6名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer6', title: '开发6 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer6', title: '开发6 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer7', title: '开发7名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer7', title: '开发7 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer7', title: '开发7 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer8', title: '开发8名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer8', title: '开发8 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer8', title: '开发8 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer9', title: '开发9名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer9', title: '开发9 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer9', title: '开发9 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer10', title: '开发10名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer10', title: '开发10 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer10', title: '开发10 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer11', title: '开发11名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer11', title: '开发11 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer11', title: '开发11 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer12', title: '开发12名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer12', title: '开发12 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer12', title: '开发12 34级bug解决率', sort: true, width: 120}

                            , {field: 'developer13', title: '开发13名称', sort: true, width: 120, style:'background-color: #009688; color: #fff;'}
                            , {field: 'bug12_solve_rate_developer13', title: '开发13 12级bug解决率', sort: true, width: 120}
                            , {field: 'bug34_solve_rate_developer13', title: '开发13 34级bug解决率', sort: true, width: 120}
                        ]]
                            , id: argTableRenderId //给渲染制定一个id,共其他监听调用
                            , page: false
                            , height: 400
                        });
                });

            }

            // 12-1）开发维度，获取参数，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制一二级bug解决及时率曲线和三四级bug解决及时率曲线。
            /*
            参数1： startTimeFromForm             : 开始时间
            参数2： endTimeFromForm               : 结束时间
            参数3： timeDifferenceFromForm        : 时间颗粒度-季/月/周/一周/二周/三周
             */
            function getRenderMapWithDeveloperByTimeAlongtimeBugSolveRateArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm){
                console.log("getRenderMapWithDeveloperByTimeAlongtimeBugSolveRateArgs，timeDifferenceFromForm参数==", timeDifferenceFromForm);
                var $ = layui.jquery;

                //创建需要返回的json数据 legendData（表头）, xAxisData（x轴）, seriesDataJson（具体数据）
                var json_obj = {"legendData":[], xAxisData:[], seriesDataJson:[] };

                console.log("json_obj.lengendData=", json_obj.legendData);
                console.log("进入请求数据方法");

                $.ajax({
                            url: "/getBugSolveRateTableForDrawMapALongtimeWithDeveloper",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm, "timeDifference":timeDifferenceFromForm},
                            datatype:"json",
                            async:false,
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);

                                returnDataJsonData0Num = Object.keys(returnDataJson.data[0]).length;
                                console.log("有多少个开发json_obj.data 数据 长度= " + returnDataJsonData0Num);
                                developerNum = (returnDataJsonData0Num -3) / 2;
                                console.log("有多少个开发,换算后" + developerNum);
                                    console.log("，returnDataJson==============");
                                console.log(returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //开发 一段时间-全部bug增长和关闭参数
                                var xAxisDataWithDeveloperAllBugFromServer = [];

                                var bug12SolveRateNumArrWithDeveloperAllBugFromServer = []; //bug12解决率
                                var bug34SolveRateNumArrWithDeveloperAllBugFromServer = []; //bug12解决率

                                //定义项目参数键值对
                                //var developerArgsKeyValue = {"key1":"value1"};
                                var developerArgsKeyValue = {};
                                console.log("developerArgsKeyValue == 最初：");
                                console.log(developerArgsKeyValue);
                                for(var i=0;i<developerNum;i++){
                                    developerArgsKeyValue['bug12SolveRateNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array();  //开发0 bug12解决率
                                    developerArgsKeyValue['bug34SolveRateNumArrWithDeveloperAllBugFromServerDeveloper' + i] = new Array();  //开发0 bug34解决率
                                    //console.log("类型" + typeof(developerArgsKeyValue['addNumArrWithDeveloperAllBugFromServerDeveloper' + i]));

                                    console.log("定义项目参数键值对 ");
                                    console.log(developerArgsKeyValue['bug12SolveRateNumArrWithDeveloperAllBugFromServerDeveloper' + i]);  //开发0 bug12解决率
                                    console.log(developerArgsKeyValue['bug34SolveRateNumArrWithDeveloperAllBugFromServerDeveloper' + i]);  //开发0 bug34解决率
                                }
                                console.log("developerArgsKeyValue == 以下：");
                                console.log(developerArgsKeyValue);


                                //循环获取[{xx,xx}, {xx,xx}] json中的数据 // 按时间循环的
                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item);
                                    console.log(item);
                                    //开发-bug解决率
                                    console.log("push不能用？？");
                                    xAxisDataWithDeveloperAllBugFromServer.push(item['bug_submit_date']); //日期
                                    bug12SolveRateNumArrWithDeveloperAllBugFromServer.push(item.bug12_solve_rate);  // bug解决率
                                    bug34SolveRateNumArrWithDeveloperAllBugFromServer.push(item.bug34_solve_rate);  // bug解决率

                                    /*
                                    addNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.add_developer0); //add_developer0
                                    closeNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.close_developer0); //close_developer0
                                    lastNumArrWithDeveloperAllBugFromServerDeveloper0.push(item.last_developer0); //last_developer0
                                     */
                                    //根据有多少项目来循环
                                    for(var i=0;i<developerNum;i++){
                                        // console.log("bug12SolveRateNumArrWithDeveloperAllBugFromServerDeveloper 前 + easy_bug_rate_developer[easy_bug_rate_developer + index]==");
                                        // console.log(developerArgsKeyValue['easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                        // console.log("item.easy_bug_rate_developer=====================前");
                                        // console.log(item['easy_bug_rate_developer' + i]);
                                        developerArgsKeyValue['bug12SolveRateNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['bug12_solve_rate_developer' + i]);
                                        developerArgsKeyValue['bug34SolveRateNumArrWithDeveloperAllBugFromServerDeveloper' + i].push(item['bug34_solve_rate_developer' + i]);

                                        // console.log("easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper 后 + easy_bug_rate_developer[easy_bug_rate_developer + index]==");
                                        // console.log(developerArgsKeyValue['easyBugRateNumArrWithDeveloperAllBugFromServerDeveloper' + i]);
                                        // console.log("item.easy_bug_rate_developer=====================后");
                                        // console.log(item['easy_bug_rate_developer' + i]);
                                    }


                                });
                                console.log("developerArgsKeyValue == 赋值完数据后 ，以下：");
                                console.log(developerArgsKeyValue);

                                //这里未完成，要有项目‘1808’-新增 == add_Developer0 close_Developer0
                                //var legendDataWithDeveloperAllBug = ["新增","关闭","剩余","add_developer0","close_developer0", "last_developer0"];
                                var legendDataWithDeveloperAllBug = ["12级bug解决率", "34级bug解决率"];
                                //循环添加上折线图标签栏
                                for(var a=0;a<developerNum;a++){
                                    legendDataWithDeveloperAllBug.push("bug12_solve_rate_developer" + a);
                                    legendDataWithDeveloperAllBug.push("bug34_solve_rate_developer" + a);
                                }

                                var xAxisDataWithDeveloperAllBug = xAxisDataWithDeveloperAllBugFromServer;

                                bug12SolveRateNumArrWithDeveloperAllBug = bug12SolveRateNumArrWithDeveloperAllBugFromServer;
                                bug34SolveRateNumArrWithDeveloperAllBug = bug34SolveRateNumArrWithDeveloperAllBugFromServer;
                                /*
                                addNumArrWithDeveloperAllBugDeveloper0 = addNumArrWithDeveloperAllBugFromServerDeveloper0;
                                closeNumArrWithDeveloperAllBugDeveloper0 = closeNumArrWithDeveloperAllBugFromServerDeveloper0;
                                lastNumArrWithDeveloperAllBugDeveloper0 = lastNumArrWithDeveloperAllBugFromServerDeveloper0;
                                 */
                                //var seriesDataJsonWithDeveloperAllBug = {"add": addNumArrWithDeveloperAllBug, "close": closeNumArrWithDeveloperAllBug, "last":lastNumArrWithDeveloperAllBug, "add_developer0":addNumArrWithDeveloperAllBugDeveloper0, "close_developer0":closeNumArrWithDeveloperAllBugDeveloper0, "last_developer0":lastNumArrWithDeveloperAllBugDeveloper0};
                                var seriesDataJsonWithDeveloperAllBug = {"bug12_solve_rate": bug12SolveRateNumArrWithDeveloperAllBug, "bug34_solve_rate": bug34SolveRateNumArrWithDeveloperAllBug};

                                for(var b=0;b<developerNum;b++){
                                    seriesDataJsonWithDeveloperAllBug['bug12_solve_rate_developer' + b] = developerArgsKeyValue['bug12SolveRateNumArrWithDeveloperAllBugFromServerDeveloper' + b]; //对应一个数组
                                    seriesDataJsonWithDeveloperAllBug['bug34_solve_rate_developer' + b] = developerArgsKeyValue['bug34SolveRateNumArrWithDeveloperAllBugFromServerDeveloper' + b]; //对应一个数组
                                }

                                json_obj.legendData = legendDataWithDeveloperAllBug;
                                json_obj.xAxisData = xAxisDataWithDeveloperAllBug;
                                json_obj.seriesDataJson = seriesDataJsonWithDeveloperAllBug;
                                console.log("json_str==" + JSON.stringify(json_obj))

                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });

                var json_str = JSON.stringify(json_obj);
                console.log('12）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制一二级bug解决及时率曲线和三四级bug解决及时率曲线。，返回的json_str=', json_str);
                return json_str;
            }
            // 12-2）开发维度，画图，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制一二级bug解决及时率曲线和三四级bug解决及时率曲线。
            /*
            参数1： legendData           : 折线图上方可以控制 是否显示折线的地方
            参数2： xAxisData            : xAxisData x轴数组
            参数3： seriesData           : seriesData 对应的具体数组
            返回值： json_str            : 返回值
            div id == bugSolveRateStatusMapWithDeveloper
             */
            function renderMapWithDeveloperByTimeAlongtimeBugSolveRate(legendData, xAxisData, seriesDataJson){
                    console.log("legendData=，xAxisData，seriesDataJson" +  legendData);
                    console.log(legendData);
                    console.log(xAxisData);
                    console.log(seriesDataJson);
                    //先清空div中的数据 第一种：
                    document.getElementById('bugSolveRateStatusMapWithDeveloper').innerHTML = "";
                    //第二种：$('#bigDiv').html("");

                    var seriesDataJsonArr = ['add_developer0', 'close_developer0', 'add_developer1', 'close_developer1', 'add_developer2', 'close_developer2', 'add_developer3', 'close_developer3', 'add_developer4', 'close_developer4',
                                             'add_developer5', 'close_developer5', 'add_developer6', 'close_developer6', 'add_developer7', 'close_developer7', 'add_developer8', 'close_developer8', 'add_developer9', 'close_developer9',
                                             'add_developer10', 'close_developer10', 'add_developer11', 'close_developer11', 'add_developer12', 'close_developer12', 'add_developer13', 'close_developer13'
                    ];

                    //设置series变量，有几个 Developer，就加几个{},是一个数组 12 34级bug解决率
                    var bug12SolveRateSeriesDataNotComplete = {
                                    name:legendData[0],
                                    type:'line',
                                    data:seriesDataJson['bug12_solve_rate']
                                };
                    var bug34SolveRateSeriesDataNotComplete = {
                                    name:legendData[1],
                                    type:'line',
                                    data:seriesDataJson['bug34_solve_rate']
                                };

                    var seriesData = []; //最终数据，放在option里的
                    seriesData.push(bug12SolveRateSeriesDataNotComplete);
                    seriesData.push(bug34SolveRateSeriesDataNotComplete);

                    for(var i=0; i< legendData.length/2 -1; i++) {
                        console.log("legendData.length" + legendData.length);
                        console.log("renderMapWithDeveloperByTimeAlongtimeBugSolveRate, 获取折线图option,循环=" + i + legendData[i] );
                        var bug12SolveRate_seriesDeveloperN =
                                {
                                    name:legendData[2 * (i+1)],  //bug12_solve_rate_developer0
                                    type:'line',
                                    data:seriesDataJson['bug12_solve_rate_developer' + i]
                                };
                        var bug34SolveRate_seriesDeveloperN =
                                {
                                    name:legendData[2 * (i+1) + 1],  // bug34_solve_rate_developer0
                                    type:'line',
                                    data:seriesDataJson['bug34_solve_rate_developer' + i]
                                };

                        seriesData.push(bug12SolveRate_seriesDeveloperN);
                        seriesData.push(bug34SolveRate_seriesDeveloperN);
                    }
                    console.log("seriesData==================");
                    console.log(seriesData);
                    //console.log(seriesDataNotComplete);

                    var chart;
                    var myChart;
                    var option;

                    require([
                        'echarts'/*, 'map/js/china' */
                    ], function (echarts) {

                        var option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                    type: 'cross',
                                    crossStyle: {
                                        color: '#999'
                                    }
                                }
                            },
                            toolbox: {
                                feature: {
                                    dataView: {show: true, readOnly: false},
                                    magicType: {show: true, type: ['line', 'bar']},
                                    restore: {show: true},
                                    saveAsImage: {show: true}
                                }
                            },
                            legend: {
                                //data:['1808','LJG','ZG','test']
                                data: legendData,
                            },
                            xAxis: [
                                {
                                    type: 'category',
                                    data: xAxisData,
                                    axisPointer: {
                                        type: 'shadow'
                                    }
                                }
                            ],
                            yAxis: [
                                {
                                    type: 'value',
                                    name: 'bug解决及时率',
                                    min: 0,
                                    max: 100,
                                    interval: 10,
                                    axisLabel: {
                                        formatter: '{value} %'
                                    }
                                },
                                {
                                    type: 'value',
                                    name: 'bug解决及时率',
                                    min: 0,
                                    max: 100,
                                    interval: 10,
                                    axisLabel: {
                                        formatter: '{value} % '
                                    }
                                }

                            ],
                            //series: seriesData
                            series: seriesData
                        };

                        chart = myChart = testHelper.create(echarts, 'bugSolveRateStatusMapWithDeveloper', {
                            option: option,
                            //title: 11）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线；1/2    月/周/季；'
                        });
                    });
            }





            //--------------------------------------- 定义相关方法 end -------------------------------------------------------

            //--------------------------------------- 执行脚本 start -------------------------------------------------------
            //渲染分页
            renderElement();

            //渲染日历
            renderLaydate("startTime");
            renderLaydate("endTime");


            //渲染table相关方法
                //每日数据
            //renderTable('tableForDrawMapWithProject', '/getTableForDrawMapWithProject', '2020-01-01', '2020-06-10', 'tableForDrawMapWithProjectId');
                //每日累加数据
            //renderTable('tableForDrawMapWithProjectEverydaySum', '/getTableForDrawMapWithProjectEverydaySum', '2020-01-01', '2020-06-10', 'tableForDrawMapWithProjectEverydaySumId');

            //渲染form相关方法
            layui.use('form',function () {
                var form = layui.form;
                var $ = layui.jquery;

                //监听提交
                  form.on('submit(search)', function(data){ // 对应lay-filter
                        startTimeFromForm = document.getElementById('startTime').value;
                        endTimeFromForm =  document.getElementById('endTime').value;
                        //timeDifference =  document.getElementById('timeDifference').value;
                        timeDifferenceFromForm = $('#selector option:selected') .val();  // 定位id ，时间差


                        console.log("开始时间=" + startTimeFromForm);
                        console.log("结束时间=" + endTimeFromForm);
                        console.log("点击了搜索按钮");
                        console.log("stimeDifferenceFromForme===" + timeDifferenceFromForm);

                        //渲染table - 每天数据
                        renderTable('tableForDrawMapWithProject', '/getTableForDrawMapWithProject', startTimeFromForm, endTimeFromForm, 'tableForDrawMapWithProjectId');
                        //渲染table - 每天相对昨天 增长/关闭情况
                        console.log("渲染table - 每天相对昨天 增长/关闭情况");
                        renderTableForDrawMapWithProjectALongtimeNewBugAddAndClose('tableForDrawMapWithProjectALongtimeNewBugAddAndClose', '/getTableForDrawMapWithProjectALongtimeNewBugAddAndClose', startTimeFromForm, endTimeFromForm, timeDifferenceFromForm, 'tableForDrawMapWithProjectALongtimeNewBugAddAndCloseId');
                        //渲染table - 每天累加数据
                        renderTable('tableForDrawMapWithProjectEverydaySum', '/getTableForDrawMapWithProjectEverydaySum', startTimeFromForm, endTimeFromForm, 'tableForDrawMapWithProjectEverydaySumId');

                        //渲染table - 项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况
                        renderTableForDrawMapWithProjectALongtimeAllBug('tableForDrawMapWithProjectALongtimeAllBug', '/getTableForDrawMapWithProjectALongtimeAllBug', startTimeFromForm, endTimeFromForm, timeDifferenceFromForm, 'tableForDrawMapWithProjectALongtimeAllBugId');

                        ///////////////////////////开发维度
                        // 渲染table - 所有bug and 1-2bug
                        renderTableAllBugDeveloper('tableWithDeveloper', '/getTableWithDeveloper', startTimeFromForm, endTimeFromForm, timeDifferenceFromForm,'tableWithDeveloperId');

                        // 9）开发维度，按时间（时间可自定义）统计软件自测考量：相比较这段时间产生的所有bug，易bug产生比率；
                        // renderTableEasyBugDeveloper('easyBugTableWithDeveloper', '/getEasyBugTableWithDeveloper', startTimeFromForm, endTimeFromForm, 'easyBugTableWithDeveloperId');
                        renderTableEasyBugALongtimeDeveloper('easyBugTableWithDeveloper', '/getEasyBugTableForDrawMapWithDeveloper', startTimeFromForm, endTimeFromForm, timeDifferenceFromForm, 'easyBugTableWithDeveloperId');

                        // 10）开发维度，按时间（时间可自定义）统计bug解决的及时性考量：一二级bug一定时间内（可自定义）的解决率，三四级bug一定时间内（可自定义时间）
                        renderTableBugSolveRateALongtimeDeveloper('bugSolveRateTableWithDeveloper', '/getBugSolveRateTableForDrawMapALongtimeWithDeveloper', startTimeFromForm, endTimeFromForm, timeDifferenceFromForm, 'bugSolveRateTableWithDeveloperId');


                        /*
                        $.ajax({
                            url: "/getTableForDrawMapWithProjectEverydaySum",
                            method: "get",
                            data:{"startTime":startTimeFromForm,"endTime":endTimeFromForm},
                            datatype:"json",
                            success:function(josnstr){//jsonstr 格式
                                console.log("获取后台数据成功，解析数据");
                                console.log("获取后台数据成功，解析数据datas="+ josnstr);
                                console.log("获取后台数据成功，解析数据datas.type="+ typeof(josnstr));
                                console.log("jsonstringfy==" + JSON.stringify(josnstr.field));
                                returnDataJson = $.parseJSON(josnstr);
                                console.log("，returnDataJson="+ returnDataJson);
                                console.log("，returnDataJson.type="+ typeof(returnDataJson));

                                //获取渲染折线图所需数据
                                    //all bug
                                var xAxisDataFromServer = [];
                                totoalNumArrFromServer = [];
                                addNumArrFromServer = [];
                                closeNumArrFromServer = [];
                                regressionNumArrFromServer = [];
                                delayNumArrFromServer = [];
                                    //12级bug参数
                                var xAxisDataWithProject12BugFromServer = [];
                                var totoalNumArrWithProject12BugFromServer = [];
                                var addNumArrWithProject12BugFromServer = [];
                                var closeNumArrWithProject12BugFromServer = [];
                                var regressionWithProject12BugNumArrFromServer = [];
                                var delayNumArrWithProject12BugFromServer = [];

                                $.each(returnDataJson.data,function (index, item) {
                                    console.log('i+item=' + index + " "+item.add);
                                    xAxisDataFromServer.push(item.bug_submit_date); //日期
                                    totoalNumArrFromServer.push(item.totalNum); //总数
                                    addNumArrFromServer.push(item.add); //新增
                                    closeNumArrFromServer.push(item.close); //关闭
                                    console.log(totoalNumArrFromServer);
                                    regressionNumArrFromServer.push(item.regression); //回归
                                    delayNumArrFromServer.push(item.delay); //延迟

                                    //1-2bug
                                    xAxisDataWithProject12BugFromServer.push(item.bug_submit_date); //日期
                                    totoalNumArrWithProject12BugFromServer.push(item.total12); //总数
                                    addNumArrWithProject12BugFromServer.push(item.add12);  //新增
                                    closeNumArrWithProject12BugFromServer.push(item.close12); //关闭
                                    regressionWithProject12BugNumArrFromServer.push(item.regression12); //回归
                                    delayNumArrWithProject12BugFromServer.push(item.delay12); //延迟
                                });
                                console.log("x轴数组" + xAxisData);

                                var legendData = ['总数','新增','关闭','回归','延迟'];
                                var xAxisData = xAxisDataFromServer;
                                totoalNumArr = totoalNumArrFromServer;
                                addNumArr = addNumArrFromServer;
                                closeNumArr = closeNumArrFromServer;
                                regressionNumArr = regressionNumArrFromServer;
                                delayNumArr = delayNumArrFromServer;

                                var seriesDataJson = {"totoalNum": totoalNumArr, "add": addNumArr, "close": closeNumArr, "regression": regressionNumArr, "delay": delayNumArr};
                                console.log('json类型= ',typeof(seriesDataJson) );
                                renderMapWithProjectByTimeAllBug(legendData, xAxisData, seriesDataJson);
                                //1）项目维度，按时间（时间可自定义）统计新增bug、关闭bug、待回归bug等； end

                                //2）项目维度，按时间（时间可自定义）统计新增一、二级新增bug、关闭bug、待回归bug等；

                                var legendDataWithProject12Bug = ['总数(1-2级bug)','新增(1-2级bug)','关闭(1-2级bug)','回归(1-2级bug)','延迟(1-2级bug)'];
                                var xAxisDataWithProject12Bug = xAxisDataWithProject12BugFromServer;
                                totoalNumArrWithProject12Bug = totoalNumArrWithProject12BugFromServer;
                                addNumArrWithProject12Bug = addNumArrWithProject12BugFromServer;
                                closeNumArrWithProject12Bug = closeNumArrWithProject12BugFromServer;
                                regressionNumArrWithProject12Bug = regressionWithProject12BugNumArrFromServer;
                                delayNumArrWithProject12Bug = delayNumArrWithProject12BugFromServer;
                                var seriesDataJsonWithProject12Bug = {"totoal12": totoalNumArrWithProject12Bug, "add12": addNumArrWithProject12Bug, "close12": closeNumArrWithProject12Bug, "regression12": regressionNumArrWithProject12Bug, "delay12": delayNumArrWithProject12Bug};

                                renderMapWithProjectByTime12Bug(legendDataWithProject12Bug, xAxisDataWithProject12Bug, seriesDataJsonWithProject12Bug);


                            },error:function(){
                                console.log("获取后台数据失败");
                            }
                        });
                        */
                        //1. 画全部bug折线图
                            //获取全部bug 折线图参数
                            console.log("画折线图 - all bug 增长/关闭情况");
                            var allBugJsonStr = getRenderMapWithProjectByTimeAllBugArgs(startTimeFromForm, endTimeFromForm);
                            console.log("画折线图 - all bug 增长/关闭情况allBugJsonStr= "+ allBugJsonStr);
                            //转成json格式
                            var allBugJsonObj = $.parseJSON(allBugJsonStr);

                            var allBugLegendData = allBugJsonObj.legendData;
                            var allBugXAxisData = allBugJsonObj.xAxisData;
                            var allBugSeriesDataJson = allBugJsonObj.seriesDataJson;
                            console.log("allBugLegendData=====" + JSON.stringify(allBugLegendData));
                            console.log("allBugXAxisData=====" + JSON.stringify(allBugXAxisData));
                            console.log("allBugSeriesDataJson=====" + JSON.stringify(allBugSeriesDataJson));

                            renderMapWithProjectByTimeAllBug(allBugLegendData, allBugXAxisData, allBugSeriesDataJson);

                         //2. 画1-2级 bug折线图
                            //获取1-2级bug 折线图参数
                            console.log("画折线图 - 1-2级 bug 增长/关闭情况");
                            var Bug12JsonStr = getRenderMapWithProjectByTime12BugArgs(startTimeFromForm, endTimeFromForm);
                            console.log("画折线图 - 1-2级 bug 增长/关闭情况1-2级 Bug12JsonStr= "+ Bug12JsonStr);
                            //转成json格式
                            var Bug12JsonObj = $.parseJSON(Bug12JsonStr);

                            var Bug12LegendData = Bug12JsonObj.legendData;
                            var Bug12XAxisData = Bug12JsonObj.xAxisData;
                            var Bug12SeriesDataJson = Bug12JsonObj.seriesDataJson;
                            console.log("Bug12LegendData=====" + JSON.stringify(Bug12LegendData));
                            console.log("Bug12XAxisData=====" + JSON.stringify(Bug12XAxisData));
                            console.log("Bug12SeriesDataJson=====" + JSON.stringify(Bug12SeriesDataJson));
                            renderMapWithProjectByTime12Bug(Bug12LegendData, Bug12XAxisData, Bug12SeriesDataJson);

                         //3. 按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线
                            //增bug增长曲线和关闭曲线
                            console.log("画折线图 - 新增bug增长曲线和关闭曲线");
                            console.log("画折线图 - 新增bug增长曲线和关闭曲线，参数timeDifferenceFromForm" + timeDifferenceFromForm );
                            var addAndCloseBugJsonStr = getRenderMapWithProjectByTimeAddBugAddAndCloseArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm);
                            console.log("画折线图 - 新增bug增长曲线和关闭曲线 Bug12JsonStr= "+ addAndCloseBugJsonStr);
                            //转成json格式
                            var addAndCloseBugJsonObj = $.parseJSON(addAndCloseBugJsonStr);

                            var addAndCloseBug12LegendData = addAndCloseBugJsonObj.legendData;
                            var addAndCloseXAxisData = addAndCloseBugJsonObj.xAxisData;
                            var addAndCloseSeriesDataJson = addAndCloseBugJsonObj.seriesDataJson;
                            console.log("addAndCloseBug12LegendData=====" + JSON.stringify(addAndCloseBug12LegendData));
                            console.log("addAndCloseXAxisData=====" + JSON.stringify(addAndCloseXAxisData));
                            console.log("addAndCloseSeriesDataJson=====" + JSON.stringify(addAndCloseSeriesDataJson));
                            renderMapWithProjectByTimeAddBugAddAndClose(addAndCloseBug12LegendData, addAndCloseXAxisData, addAndCloseSeriesDataJson);

                         //4. 项目维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线； + bug剩余情况
                            console.log("画折线图 - 全部bug增长曲线和关闭曲线");
                            console.log("画折线图 - 全部bug增长曲线和关闭曲线，参数timeDifferenceFromForm" + timeDifferenceFromForm );
                            var allBugAlongtimeProjectJsonStr = getRenderMapWithProjectByTimeAlongtimeAllBugArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm);
                            console.log("画折线图 - 全部bug增长曲线和关闭曲线 allBugAlongtimeProjectJsonStr= "+ allBugAlongtimeProjectJsonStr);
                            //转成json格式
                            var allBugAlongtimeProjectJsonObj = $.parseJSON(allBugAlongtimeProjectJsonStr);

                            var allBugAlongtimeProjectLegendData = allBugAlongtimeProjectJsonObj.legendData;
                            var allBugAlongtimeProjectXAxisData = allBugAlongtimeProjectJsonObj.xAxisData;
                            var allBugAlongtimeProjectSeriesDataJson = allBugAlongtimeProjectJsonObj.seriesDataJson;
                            console.log("allBugAlongtimeProjectLegendData=====" + JSON.stringify(allBugAlongtimeProjectLegendData));
                            console.log("allBugAlongtimeProjectXAxisData=====" + JSON.stringify(allBugAlongtimeProjectXAxisData));
                            console.log("allBugAlongtimeProjectSeriesDataJson=====" + JSON.stringify(allBugAlongtimeProjectSeriesDataJson));
                            renderMapWithProjectByTimeAlongtimeAllBug(allBugAlongtimeProjectLegendData, allBugAlongtimeProjectXAxisData, allBugAlongtimeProjectSeriesDataJson);

                         //7）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制新增bug增长曲线和关闭曲线；
                            console.log("画折线图 - 新增bug增长曲线和关闭曲线");
                            console.log("画折线图 - 新增bug增长曲线和关闭曲线，参数timeDifferenceFromForm" + timeDifferenceFromForm );
                            var addAndCloseBugAlongtimeDeveloperJsonStr = getRenderMapWithDeveloperByTimeAlongtimeAddBugAddAndCloseArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm);
                            console.log("画折线图 - 开发维度,新增bug增长曲线和关闭曲线 addAndCloseBugAlongtimeDeveloperJsonStr= "+ addAndCloseBugAlongtimeDeveloperJsonStr);
                            //转成json格式
                            var addAndCloseBugAlongtimeDeveloperJsonObj = $.parseJSON(addAndCloseBugAlongtimeDeveloperJsonStr);

                            var addAndCloseBugAlongtimeDeveloperLegendData = addAndCloseBugAlongtimeDeveloperJsonObj.legendData;
                            var addAndCloseBugAlongtimeDeveloperXAxisData = addAndCloseBugAlongtimeDeveloperJsonObj.xAxisData;
                            var addAndCloseBugAlongtimeDeveloperSeriesDataJson = addAndCloseBugAlongtimeDeveloperJsonObj.seriesDataJson;
                            console.log("addAndCloseBugAlongtimeDeveloperLegendData=====" + JSON.stringify(addAndCloseBugAlongtimeDeveloperLegendData));
                            console.log("addAndCloseBugAlongtimeDeveloperXAxisData=====" + JSON.stringify(addAndCloseBugAlongtimeDeveloperXAxisData));
                            console.log("addAndCloseBugAlongtimeDeveloperSeriesDataJson=====" + JSON.stringify(addAndCloseBugAlongtimeDeveloperSeriesDataJson));
                            renderMapWithDeveloperByTimeAlongtimeAddBugAddAndClose(addAndCloseBugAlongtimeDeveloperLegendData, addAndCloseBugAlongtimeDeveloperXAxisData, addAndCloseBugAlongtimeDeveloperSeriesDataJson);

                         //8）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制全部bug增长曲线和关闭曲线 + bug剩余情况 ；
                            console.log("画折线图 - 全部bug增长曲线和关闭曲线");
                            console.log("画折线图 - 全部bug增长曲线和关闭曲线，参数timeDifferenceFromForm" + timeDifferenceFromForm );
                            var allBugAlongtimeDeveloperJsonStr = getRenderMapWithDeveloperByTimeAlongtimeAllBugArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm);
                            console.log("画折线图 - 开发维度,全部bug增长曲线和关闭曲线 allBugAlongtimeDeveloperJsonStr= "+ allBugAlongtimeDeveloperJsonStr);
                            //转成json格式
                            var allBugAlongtimeDeveloperJsonObj = $.parseJSON(allBugAlongtimeDeveloperJsonStr);

                            var allBugAlongtimeDeveloperLegendData = allBugAlongtimeDeveloperJsonObj.legendData;
                            var allBugAlongtimeDeveloperXAxisData = allBugAlongtimeDeveloperJsonObj.xAxisData;
                            var allBugAlongtimeDeveloperSeriesDataJson = allBugAlongtimeDeveloperJsonObj.seriesDataJson;
                            console.log("allBugAlongtimeDeveloperLegendData=====" + JSON.stringify(allBugAlongtimeDeveloperLegendData));
                            console.log("allBugAlongtimeDeveloperXAxisData=====" + JSON.stringify(allBugAlongtimeDeveloperXAxisData));
                            console.log("allBugAlongtimeDeveloperSeriesDataJson=====" + JSON.stringify(allBugAlongtimeDeveloperSeriesDataJson));
                            renderMapWithDeveloperByTimeAlongtimeAllBug(allBugAlongtimeDeveloperLegendData, allBugAlongtimeDeveloperXAxisData, allBugAlongtimeDeveloperSeriesDataJson);

                         //11）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线；1/2    月/周/季
                            console.log("画折线图 - 开发维度,一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线");
                            console.log("画折线图 - 开发维度,一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线，参数timeDifferenceFromForm" + timeDifferenceFromForm );
                            var easyBugAlongtimeDeveloperJsonStr = getRenderMapWithDeveloperByTimeAlongtimeEasyBugArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm);
                            console.log("画折线图 - 开发维度,一定时间颗粒度（时间可自定义），绘制易bug产生比率曲线 easyBugAlongtimeDeveloperJsonStr= "+ easyBugAlongtimeDeveloperJsonStr);
                            //转成json格式
                            var easyBugAlongtimeDeveloperJsonObj = $.parseJSON(easyBugAlongtimeDeveloperJsonStr);

                            var easyBugAlongtimeDeveloperLegendData = easyBugAlongtimeDeveloperJsonObj.legendData;
                            var easyBugAlongtimeDeveloperXAxisData = easyBugAlongtimeDeveloperJsonObj.xAxisData;
                            var easyBugAlongtimeDeveloperSeriesDataJson = easyBugAlongtimeDeveloperJsonObj.seriesDataJson;
                            console.log("allBugAlongtimeDeveloperLegendData=====" + JSON.stringify(easyBugAlongtimeDeveloperLegendData));
                            console.log("allBugAlongtimeDeveloperXAxisData=====" + JSON.stringify(easyBugAlongtimeDeveloperXAxisData));
                            console.log("allBugAlongtimeDeveloperSeriesDataJson=====" + JSON.stringify(easyBugAlongtimeDeveloperSeriesDataJson));
                            renderMapWithDeveloperByTimeAlongtimeEasyBug(easyBugAlongtimeDeveloperLegendData, easyBugAlongtimeDeveloperXAxisData, easyBugAlongtimeDeveloperSeriesDataJson);

                         // 12）开发维度，按时间（时间可自定义），按照一定时间颗粒度（时间可自定义），绘制一二级bug解决及时率曲线和三四级bug解决及时率曲线。
                            console.log("画折线图 - 开发维度,一定时间颗粒度（时间可自定义），绘制一二级bug解决及时率曲线和三四级bug解决及时率曲线");
                            console.log("画折线图 - 开发维度,一定时间颗粒度（时间可自定义），绘制一二级bug解决及时率曲线和三四级bug解决及时率曲线，参数timeDifferenceFromForm" + timeDifferenceFromForm );
                            var bugSolveRateAlongtimeDeveloperJsonStr = getRenderMapWithDeveloperByTimeAlongtimeBugSolveRateArgs(startTimeFromForm, endTimeFromForm, timeDifferenceFromForm);
                            console.log("画折线图 - 开发维度,一定时间颗粒度（时间可自定义），绘制一二级bug解决及时率曲线和三四级bug解决及时率曲线 bugSolveRateAlongtimeDeveloperJsonStr= "+ bugSolveRateAlongtimeDeveloperJsonStr);
                            //转成json格式
                            var bugSolveRateAlongtimeDeveloperJsonObj = $.parseJSON(bugSolveRateAlongtimeDeveloperJsonStr);

                            var bugSolveRateAlongtimeDeveloperLegendData = bugSolveRateAlongtimeDeveloperJsonObj.legendData;
                            var bugSolveRateAlongtimeDeveloperXAxisData = bugSolveRateAlongtimeDeveloperJsonObj.xAxisData;
                            var bugSolveRateAlongtimeDeveloperSeriesDataJson = bugSolveRateAlongtimeDeveloperJsonObj.seriesDataJson;
                            console.log("bugSolveRateAlongtimeDeveloperLegendData=====" + JSON.stringify(bugSolveRateAlongtimeDeveloperLegendData));
                            console.log("bugSolveRateAlongtimeDeveloperXAxisData=====" + JSON.stringify(bugSolveRateAlongtimeDeveloperXAxisData));
                            console.log("bugSolveRateAlongtimeDeveloperSeriesDataJson=====" + JSON.stringify(bugSolveRateAlongtimeDeveloperSeriesDataJson));
                            renderMapWithDeveloperByTimeAlongtimeBugSolveRate(bugSolveRateAlongtimeDeveloperLegendData, bugSolveRateAlongtimeDeveloperXAxisData, bugSolveRateAlongtimeDeveloperSeriesDataJson);

                        return false;  //页面不跳转

                  });

            });
            //layui.uer('form') end



            //渲染折线图相关
            /*
            var legendData = ['总数','新增','关闭','回归','延迟'];
            var xAxisData = ['2020-01-10','2020-01-13','2020-01-14','2020-01-15','2020-02-14','2020-02-18','2020-02-19'
                                          ,'2020-02-25','2020-03-18','2020-03-26','2020-03-30','2020-04-01','2020-04-02'
                                          ,'2020-04-07','2020-04-13','2020-04-16','2020-05-13','2020-06-10'];
            totoalNumArr = [22,26,67,70,71,77,83,84,150,153,179,208,219,220,257,267,268,269];
            addNumArr = [0,0,0,0,0,0,0,0,8,9,9,12,13,13,16,16,16,17];
            closeNumArr = [22,26,67,70,71,76,82,83,136,138,164,189,197,198,226,236,237,237];
            regressionNumArr = [0,0,0,0,0,0,0,1,1,1,1,12,2,2,4,4,4,4];
            delayNumArr = [0,0,0,0,0,1,1,1,5,5,5,6,7,7,11,11,11,11];

            var seriesDataJson = {"totoalNum": totoalNumArr, "add": addNumArr, "close": closeNumArr, "regression": regressionNumArr, "delay": delayNumArr};
            console.log('json类型= ',typeof(seriesDataJson) );
            renderMapWithProjectByTimeAllBug(legendData, xAxisData, seriesDataJson)

             */




            //--------------------------------------- 执行脚本 start -------------------------------------------------------

        </script>

    </body>
</html>
